티스토리 뷰
728x90
fun drop(table: String) {
val spark = SparkUtil.instance(CommonUtil.methodName())
spark.catalog().dropTempView(table)
}
object SparkUtil {
fun instance(name: String? = ""): SparkSession {
return make(name!!)
}
private fun make(name: String): SparkSession {
return config(
SparkSession.builder().appName(name)
).enableHiveSupport().orCreate
}
private fun config(builder: SparkSession.Builder): SparkSession.Builder {
val map = YamlUtils.read(this::class.java, "spark", Extension.YAML)
var b = builder
map.keys.forEach {
val k = it
val v = map[k]
b = when (v) {
is Long -> b.config(k, v)
is String -> b.config(k, v)
is Double -> b.config(k, v)
is Boolean -> b.config(k, v)
else -> b
}
}
return b
}
}
object YamlUtils {
fun <T> read(clazz: Class<T>, name: String, extension: Extension): Map<String, Any> {
val readValue = CommonUtil.flatMap(
Yaml().load(
FileUtil.inputStream(clazz, name, extension)
)
).toMutableMap()
readValue.forEach {
if (EnvUtil.contains(it.value)) {
readValue[it.key] = EnvUtil.convert(it.value)
}
}
return readValue.toMap()
}
}
object EnvUtil {
private val REGEX = Regex("\\$\\{?([a-zA-Z_/]*)}?")
fun convert(value: Any): String {
var v = value.toString()
val map = find(v)
map.forEach {
v = v.replace(it.key, get(it.value) ?: it.key)
}
return v
}
fun contains(value: Any): Boolean {
return find(value).isNotEmpty()
}
private fun find(value: Any): MutableMap<String, String> {
val map = mutableMapOf<String, String>()
val matches = REGEX.findAll(value.toString())
matches.forEach {
map[it.groupValues[0]] = it.groupValues[1]
}
return map
}
fun get(key: String): String? {
return System.getenv(key)
}
}
object CommonUtil {
inline fun methodName(): String = object {}::class.java.enclosingMethod.name
inline fun className(): String = object {}::class.java.enclosingClass.simpleName
inline fun <reified T> setDefault(s: String, defaultVal: T): T {
return if (StringUtils.isEmpty(s) || StringUtils.equalsIgnoreCase(s, "null")) {
defaultVal
} else {
@Suppress("UNCHECKED_CAST") s as T
}
}
inline fun <reified T> setDefault(args: Array<String>, index: Int, defaultVal: T): T {
return try {
setDefault(args[index], defaultVal)
} catch (expected: Exception) {
defaultVal
}
}
operator fun <T> get(list: List<T>, i: Int): T? {
return try {
list[i]
} catch (expected: Exception) {
null
}
}
fun flatMap(
map: Map<String, Any>,
flat: MutableMap<String, Any>? = mutableMapOf(),
prefix: String? = null
): Map<String, Any> {
flat!!
for (k in map.keys) {
val key = if (prefix == null) {
k
} else {
"$prefix.$k"
}
if (map[k] is Map<*, *>) {
val m = map[k] as Map<String, Any>
flatMap(m, flat, key)
continue
}
flat[key] = map[k]!!
}
return flat
}
}
spark:
sql:
crossJoin.enabled: true
hive.convertMetastoreOrc: false
sources.partitionOverwriteMode: dynamic
broadcastTimeout: 36000
autoBroadcastJoinThreshold: -1
legacy:
parquet:
int96RebaseModeInRead: CORRECTED
int96RebaseModeInWrite: CORRECTED
datetimeRebaseModeInRead: CORRECTED
datetimeRebaseModeInWrite: CORRECTED
timeParserPolicy: LEGACY
storeAssignmentPolicy: LEGACY
hive:
exec:
dynamic.partition: true
dynamic.partition.mode: nonstrict
metastore:
client:
factory:
class: com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
https://www.tabnine.com/code/java/methods/org.apache.spark.sql.catalog.Catalog/dropTempView
org.apache.spark.sql.catalog.Catalog.dropTempView java code examples | Tabnine
catalog.dropTempView(tableName);
www.tabnine.com
728x90
'공부' 카테고리의 다른 글
[java] reverse string (0) | 2022.09.11 |
---|---|
[HBase] region 수를 작게 해야 하는 이유 (0) | 2022.09.11 |
[python] sort dict by key (0) | 2022.09.10 |
`orc` vs `parquet` vs `avro` (0) | 2022.09.10 |
[aws] emr.sh (0) | 2022.09.10 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 테슬라 레퍼럴 적용 확인
- 개리마커스
- 클루지
- 어떻게 능력을 보여줄 것인가?
- 테슬라 리퍼럴 코드 혜택
- 인스타그램
- 테슬라 리퍼럴 코드
- 모델 Y 레퍼럴
- 레퍼럴
- 테슬라
- 할인
- 테슬라 레퍼럴 코드 확인
- 김달
- follower
- 테슬라 레퍼럴
- wlw
- 유투브
- Bot
- Kluge
- 테슬라 크레딧 사용
- 테슬라 리퍼럴 코드 생성
- 책그림
- 메디파크 내과 전문의 의학박사 김영수
- 테슬라 추천
- 팔로워 수 세기
- 연애학개론
- 모델y
- COUNT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함