แซแแแ แคแแกแ แแแแแฎแแแแแแ, แแแ แแ แแฆแ!
แแ แกแขแแขแแแจแ Neoflex-แแก Big Data Solutions แแแแแแก แแแแแก แฌแแแงแแแแ แแแแกแฃแแขแแแขแ แแแขแแแฃแ แแ แแฆแฌแแ แก Apache Spark-แแก แแแแแงแแแแแแ แชแแแแแ แกแขแ แฃแฅแขแฃแ แแก แแแขแ แแแแแแก แแแแแแก แแแ แแแแขแแแก.
แ แแแแ แช แแแแแชแแแแ แแแแแแแแก แแ แแแฅแขแแก แแแฌแแแ, แฎแจแแ แแ แฉแแแแแ แแแฆแแแแแก แแแขแ แแแแแแก แแจแแแแแแก แแแแชแแแ, แ แแแแแแช แแคแฃแซแแแแ แแแแแกแฃแคแแแ แกแขแ แฃแฅแขแฃแ แแ แแแฃแ แแแแแชแแแแแก.
แฉแแแฃแแแแ แแ, แแก แแ แแก แแฃแ แแแแแแ, แแ แแแกแฃแฎแแแ แกแฎแแแแแกแฎแแ แกแแกแขแแแแแแแแ, แจแแแแฎแฃแแ แ แแแแ แช JSON แแ XML. แแแแแชแแแแแ แแแขแแแ แแแแ Hadoop-แจแ, แจแแแแแ แแฅแแแ แฃแแแ แแแฌแงแแ แแแฆแแแแแก แแแขแ แแแ แแแแแแ. แฉแแแ แจแแแแแซแแแ แแแแแฌแงแแ แฌแแแแแ แจแแฅแแแแ แแแขแ แแแแแ, แแแแแแแแแ, Impala-แก แแแจแแแแแแ.
แแ แจแแแแฎแแแแแจแ, แกแแแแแแ แแแขแ แแแแก แกแฅแแแ แฌแแแแกแฌแแ แแ แแ แแก แชแแแแแแ. แฃแคแ แ แแแขแแช, แกแฅแแแแก แฌแแแแกแฌแแ แจแแแแแแ แแกแแแ แจแแฃแซแแแแแแแ, แ แแแแแ แแก แแแแแแแแแแฃแแแ แแแแแชแแแแแแ แแ แกแแฅแแ แแแแฅแแก แแ แซแแแแแ แแแแแกแฃแคแแแ แกแขแ แฃแฅแขแฃแ แแ แแแฃแ แแแแแชแแแแแแแ.
แแแแแแแแแ, แแฆแแก แแแ แแแแกแขแ แแ แแ แจแแแแแแ แแแกแฃแฎแ:
{source: "app1", error_code: ""}
แแ แฎแแแ แแแแแ แกแแกแขแแแแแแ แแแแแก แจแแแแแแ แแแกแฃแฎแ:
{source: "app1", error_code: "error", description: "Network error"}
แจแแแแแแ แแแขแ แแแแก แฃแแแ แแแแแแขแแก แแแแแ แแ แแ แแแแ - แแฆแฌแแ แ แแ แแ แแแแ แแชแแก แแแแ แแฃ แแ แ.
แแกแแ แแแแแชแแแแแแ แแแขแ แแแแก แจแแฅแแแแก แแแแชแแแ แกแแแแแแ แกแขแแแแแ แขแฃแแแ แแ Spark-แก แแแแกแแแแแก แแ แแแ แแ แแแกแขแ แฃแแแแขแ แแฅแแก. แฌแงแแ แแก แแแแแชแแแแแแก แแแกแแแแแแแแแแแแ แแ แแก แ แแแแ แช JSON, แแกแแแ XML แแฎแแ แแแญแแ แ, แฎแแแ แแแ แ แฃแชแแแแ แกแฅแแแแกแแแแก แฃแแ แฃแแแแแงแแคแแแแ schemaEvolution-แแก แแฎแแ แแแญแแ แ.
แแ แแ แจแแฎแแแแแ, แแแแแกแแแแแ แแแ แขแแแ แฉแแแก. แแฅแแแ แฃแแแ แแแฆแแ แกแแฅแแฆแแแแ JSON-แแ แแ แฌแแแแแแฎแแ แแแ แแแแแชแแแแ แฉแแ แฉแแจแ. Spark แจแแฅแแแแก แกแฅแแแแก, แแแแแแฅแชแแแก แฌแงแแแแ แแแแแชแแแแแก แกแขแ แฃแฅแขแฃแ แแแแ. แแแ แแ แแแแกแ, แงแแแแแคแแ แ แฃแแแ แจแแแแแฎแแ แแแ แแแขแจแ, แ แแแแแกแแช แแกแแแ แแฎแแ แก แฃแญแแ แก Impala, แแแขแ แแแแก แแแ แแแแกแขแ แแ แแแแ Hive metastore-แจแ.
แ แแแแ แช แฉแแแก, แงแแแแแคแแ แ แแแ แขแแแแ.
แแฃแแชแ, แแแแฃแแแแขแแชแแแจแ แแแงแแแแแแ แแแแแ แแแแแแแแแแแแแ แแ แแ แแก แแแแแแ, แ แ แฃแแแ แแแแแแแแก แแ แแฅแขแแแแจแ แแ แกแแแฃแ แแแแ แ แแ แแ แแแแแแแแแแ.
แแแแฃแแแแขแแชแแ แแฆแฌแแ แก แแแแแแแแก แแ แ แแแขแ แแแแก แจแแกแแฅแแแแแแ, แแ แแแแ JSON แแ XML แแแแแชแแแแ แฉแแ แฉแแจแ แฌแแแแแฎแแแกแแแแก.
แแแ แซแแ, แแก แฃแแ แแแแ แแฉแแแแแแก, แแฃ แ แแแแ แฃแแแ แฌแแแแแแฎแแ แแ แแแแแแแแแแแ JSON:
df = spark.read.json(path...)
แแก แกแแแแแ แแกแแ แแแแกแแแแก, แ แแ แแแแแชแแแแแ แฎแแแแแกแแฌแแแแแ แแแฎแแแก Spark-แแกแแแแก.
แแ แแฅแขแแแแจแ, แกแแ แแแขแ แแแแ แแ แฃแคแ แ แ แแฃแแแ, แแแแ แ แฃแแ แแแแ แกแแฅแแฆแแแแแแแ JSON แคแแแแแแแก แฌแแแแแฎแแ แแ แแแแแชแแแแ แฉแแ แฉแแก แจแแฅแแแ. แกแแขแฃแแชแแ แแกแ แแแแแแงแฃแ แแแ: แฃแแแ แแ แแก แแแ แแแแฃแแ แแแขแ แแแ, แงแแแแแแฆแ แจแแแแแแก แแฎแแแ แแแแแชแแแแแ, แแกแแแ แฃแแแ แแแแแแขแแก แแแขแ แแแแก, แแ แฃแแแ แแแแแแแแฌแงแแแก, แ แแ แกแฅแแแ แจแแแซแแแแ แแแแกแฎแแแแแแแแแแก.
แแแขแ แแแแก แแจแแแแแแก แฉแแแฃแแแแ แแแ แกแฅแแแ แจแแแแแแแ:
แแแแแฏแ 1. แแแแแชแแแแแ แแขแแแ แแแแ Hadoop-แจแ แจแแแแแแแ แงแแแแแแฆแแฃแ แ แแแแแขแแแ แแแแ แแ แแแแขแแแ แแฎแแ แแแแแงแแคแก. แแแแแแแก แกแแฅแแฆแแแแ แแแแแแแแ แแแแ แแแแแชแแแแแแ แแแงแแคแแแ แแฆแแก แแแฎแแแแแ.
แแแแแฏแ 2. แกแแฌแงแแกแ แฉแแขแแแ แแแแก แแ แแก แแก แกแแฅแแฆแแแแ แแแแแฎแแแ แแ แแแแแแแแแแ Spark-แแก แแแแ . แจแแแแแแ แแแฆแแแฃแแ แแแแแชแแแแ แฉแแ แฉแ แแแแฎแแแ แแแกแแแแแแแแแแแ แคแแ แแแขแจแ, แแแแแแแแแ, แแแ แแแขแจแ, แ แแแแแแช แจแแแแแ แจแแแซแแแแ แแแแแ แขแแ แแแฃแแ แแงแแก Impala-แจแ. แแก แฅแแแแก แกแแแแแแ แแแแแคแแแแก แงแแแแ แแแแแชแแแแ, แ แแแแแแช แแแแ แแแแ แแ แแแแแแขแแแแ.
แแแแแฏแ 3. แแฅแแแแแ แฉแแแแขแแแ แแแ, แ แแแแแแช แแแแแแฎแแแแก แแแฆแแแแแก แแแขแ แแแแก แงแแแแแแฆแ.
แฉแแแแแ แแแแแขแแแแแ แแแขแแแ แแแแก แกแแแแแฎแ, แแแขแ แแแแก แแแงแแคแแก แแฃแชแแแแแแแแ แแ แแแขแ แแแแก แแแแแแ แกแฅแแแแก แจแแแแ แฉแฃแแแแแก แกแแแแแฎแ.
แแแแฆแแ แแแแแแแแ. แแแแฃแจแแแ, แ แแ แกแแชแแแแก แแจแแแแแแก แแแ แแแแ แแแแแฏแ แแแแฎแแ แชแแแแแ แแ JSON แคแแแแแแ แแแขแแแ แแแแ แกแแฅแแฆแแแแแจแ.
แแแแแแ แแแแแชแแแแ แฉแแ แฉแแก แจแแฅแแแ, แจแแแแแ แแแกแ แแแขแ แแแแก แกแแฎแแ แจแแแแฎแแ แแ แแแแแแ แแ แแ แแก. แแก แแ แแก แแแ แแแแ แแแแแฏแ, แ แแแแแแช แแแแแแแ แจแแแแซแแแแ แแแฎแแ Spark-แแก แแแแฃแแแแขแแชแแแจแ:
df = spark.read.option("mergeSchema", True).json(".../*")
df.printSchema()
root
|-- a: long (nullable = true)
|-- b: string (nullable = true)
|-- c: struct (nullable = true) |
|-- d: long (nullable = true)
แงแแแแแคแแ แ แแแ แแแ แฉแแแก.
แฉแแแ แแแแแฎแฃแแแแ แแ แแแแแแแแแแแแแ JSON-แก, แจแแแแแ แแแแแฎแแแ แแแแแชแแแแ แฉแแ แฉแแก แแแ แแแขแแ แแ แแแ แแแแกแขแ แแ แแแ แแแก Hive-แจแ แแแแแกแแแแ แ แแแกแแฎแแ แฎแแแแแ แแแแ:
df.write.format(โparquetโ).option('path','<External Table Path>').saveAsTable('<Table Name>')
แฉแแแ แแแฆแแแ แคแแแฏแแ แแก.
แแแแ แแ, แแแแ แ แแฆแแก, แฌแงแแ แแแแ แแฎแแแ แแแแแชแแแแแ แแแแแแขแ. แฉแแแ แแแแฅแแก แกแแฅแแฆแแแแ JSON-แแ แแ แแ แกแแฅแแฆแแแแแแแ แจแแฅแแแแแ แแแขแ แแแ. แฌแงแแ แแแแ แแแแแชแแแแแแก แจแแแแแแ แฏแแฃแคแแก แฉแแขแแแ แแแแก แจแแแแแ, แแแแแชแแแแ แแแ แขแก แแแแแ แแ แแ แแฆแแก แแแแแชแแแแแ.
แแแแแแฃแ แ แแแแแกแแแแแ แแฅแแแแ แแแขแ แแแแก แแแงแแคแ แแฆแแก แแแแแแแแแแแจแ, แ แแช แกแแจแฃแแแแแแก แแแแชแแแ แแแแแแขแแ แแฎแแแ แแแแแงแแคแ แงแแแแ แแแแ แ แแฆแแก. แแแแก แแแฅแแแแแแ แแกแแแ แชแแแแแแแ, Spark แกแแจแฃแแแแแแก แแแซแแแแ แแแฌแแ แแ แขแแฎแ แแแ แชแแแแ.
แแแ แแแ แ แแแจแ, แฉแแแ แแแแแแแแ แกแแฌแงแแก แแแขแแแ แแแแก, แแแแแฎแแแ แแแแแชแแแแแก, แ แแแแ แช แแแแแ แแงแ แแฆแฌแแ แแแ, แแแแแขแแแ แแฎแแแแ แแแงแแคแแก. แแ แแแฅแแแแแแแก แแฌแแแแแ แแแฆแแแแแก แแแแชแแแแแแแชแแ แแ แแแแแแแ แแฎแแแแ แแ แแฎแแ:
df.write.partitionBy("date_load").mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable)
แแแแ แ แแฆแแก แฉแแแ แแขแแแ แแแแ แแฎแแแแ แแฎแแ แแแแแงแแคแแก:
df.coalesce(1).write.mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable +"/date_load=" + date_load + "/")
แ แฉแแแ แแฎแแแแ แฎแแแแฎแแ แแแ แแแแกแขแ แแ แแแ Hive-แจแ แกแฅแแแแก แแแแแฎแแแแแกแแแแก.
แแฃแแชแ, แกแฌแแ แแ แแฅ แฉแแแแแ แแ แแแแแแแแ.
แแแ แแแแ แแ แแแแแแ. แแแ แ แแฃ แแแแแ, แแแฆแแแฃแแ แแแ แแแขแ แฌแแฃแแแแฎแแแ แแฅแแแแ. แแก แแแแก แแแแ แฎแแแแ, แ แแ แแแ แแแขแ แแ JSON แแแแกแฎแแแแแแฃแแแ แแแงแ แแแแแ แชแแ แแแ แแแแแแก.
แแแแแแฎแแแแ แขแแแแฃแ แ แกแแขแฃแแชแแ. แแแแแแแแแ, แแฃแจแแ JSON แฉแแแแแแก:
ะะตะฝั 1: {"a": {"b": 1}},
แแ แแฆแแก แแแแแ JSON แแกแ แแแแแแงแฃแ แแแ:
ะะตะฝั 2: {"a": null}
แแแฅแแแ, แแแแฅแแก แแ แ แแแแกแฎแแแแแแฃแแ แแแแแงแแคแ, แแแแแแฃแแก แแฅแแก แแ แแ แฎแแแ.
แ แแแแกแแช แฉแแแ แฌแแแแแแแฎแแแ แแแแแแ แฌแงแแ แแก แแแแแชแแแแแก, Spark แจแแซแแแแก แแแแกแแแฆแแ แแก แขแแแ แแ แแแฎแแแแแ, แ แแ "a" แแ แแก "แกแขแ แฃแฅแขแฃแ แแก" แขแแแแก แแแแ, แ แแแแแกแแช แแฅแแก แฉแแกแแฃแแ แแแแ "b" แขแแแแก INT. แแแแ แแ, แแฃ แแแแแแฃแแ แแแแแงแแคแ แชแแแแ แแงแ แจแแแแฎแฃแแ, แแแจแแ แแแฆแแแ แแแ แแแขแก แจแแฃแแแแกแแแแแ แแแแแงแแคแแก แกแฅแแแแแแ:
df1 (a: <struct<"b": INT>>)
df2 (a: STRING NULLABLE)
แแก แกแแขแฃแแชแแ แแแ แแแ แแ แแก แชแแแแแแ, แแแแขแแ แกแแแชแแแแฃแ แแ แแแแแแขแ แแแ แแแแขแ - แฌแงแแ แแก แแแแแชแแแแแแก แแแแแแแแแแแแกแแก แแแแแฆแแ แชแแ แแแแ แแแแแแ:
df = spark.read.json("...", dropFieldIfAllNull=True)
แแ แจแแแแฎแแแแแจแ, แแแ แแแขแ แจแแแแแแ แขแแฎแ แแแแกแแแ, แ แแแแแแ แฌแแแแแฎแแ แจแแกแแซแแแแแแแ แแ แแแ.
แแฃแแชแ, แแแแช แแแแก แแ แแฅแขแแแแจแ แแแแแแแแ, แแฅ แแฌแแ แแ แแแแฆแแแแแ. แ แแขแแ? แแแแฎ, แ แแแแแ, แกแแแแ แแฃแแแ, แแแแแ แแ แ โโแกแแขแฃแแชแแ แแฅแแแแ. แแ แกแแแ. แแ แแแฎแ. แแแ แแแแ, แ แแแแแแช แแแแฅแแแก แแฃแชแแแแแแแ แแแฎแแแแ, แแ แแก แแก, แ แแ แ แแชแฎแแแแ แขแแแแแ แแแแกแฎแแแแแแฃแแแ แแแแแแงแฃแ แแแ แกแฎแแแแแกแฎแแ JSON แคแแแแจแ. แแแแแแแแแ, {intField: 1} แแ {intField: 1.1}. แแฃ แแกแแแ แแแแแแ แแแฎแแแแแ แแ แ แแแแแงแแคแจแ, แแแจแแ แกแฅแแแแก แจแแ แฌแงแแ แฌแแแแแแฎแแแก แงแแแแแคแแ แก แกแฌแแ แแ, แ แแช แแแแแแฌแแแแก แงแแแแแแ แแฃแกแข แขแแแก. แแแแ แแ แแฃ แกแฎแแแแแกแฎแแแจแ, แแแจแแ แแ แแก แแฅแแแแ intField: int, แฎแแแ แแแแ แแก แแฅแแแแ intField: double.
แแ แกแแขแฃแแชแแแก แแแกแแแแแ แแแแแ แแ แแก แจแแแแแแ แแ แแจแ:
df = spark.read.json("...", dropFieldIfAllNull=True, primitivesAsString=True)
แแฎแแ แฉแแแ แแแแฅแแก แกแแฅแแฆแแแแ, แกแแแแช แแ แแก แแแแแงแแคแแแ, แ แแแแแแ แฌแแแแแฎแแ แจแแกแแซแแแแแแแ แแ แ แแแแแชแแแแ แฉแแ แฉแแจแ แแ แแแแแ แแแขแ แแแแก แแแฅแแแ แแแ แแแขแจแ. แแแแฎ? แแ แ.
แฃแแแ แแแแฎแกแแแแแก, แ แแ แชแฎแ แแแ แแแแแ แแแแกแขแ แแ แแ Hive-แจแ. Hive แแ แแ แแก แ แแแแกแขแ แแ แแแฃแแ แแแแแแแก แกแแฎแแแแแจแ, แฎแแแ แแแ แแแขแ แแ แแก แ แแแแกแขแ แแ แแแฃแแ. แแแแขแแ, แแแแแงแแคแแแ แกแฅแแแแแแ: field1: int แแ Field1: int แแแแแแ Hive-แกแแแแก, แแแแ แแ แแ แ Spark-แแกแแแแก. แแ แแแแแแแฌแงแแแ แแแแแแแก แกแแฎแแแแแแก แแชแแ แ แ แแแแ แแจแ แแแแแงแแแแ.
แแแแก แจแแแแแ แแแแฅแแก แงแแแแแคแแ แ แแแ แแแแแ.
แแฃแแชแ, แงแแแแแคแแ แ แแกแ แแแ แขแแแ แแ แแ แแก. แแ แแก แแแแ แ, แแกแแแ แชแแแแแแ แแ แแแแแแ. แแแแแแแแ แงแแแแแ แแฎแแแ แแแแแงแแคแ แชแแแแ แแแแฎแแแ, แแแแแงแแคแแก แกแแฅแแฆแแแแ แจแแแชแแแก Spark แกแแ แแแกแแก แคแแแแแแก, แแแแแแแแแ, _SUCCESS แแแแ แแชแแแก แฌแแ แแแขแแแแก แแ แแจแแก. แแก แแแแแแฌแแแแก แจแแชแแแแแก แแแ แแแขแแก แแชแแแแแแแกแแก. แแแแก แแแแแแแ แแกแแชแแแแแแแ, แแฅแแแ แฃแแแ แแแแแแแคแแแฃแ แแ แแ แแแแคแแแฃแ แแชแแ, แ แแแ แแแแแแแ แแแชแแแแ Spark-แก แกแแฅแแฆแแแแแจแ แกแแ แแแกแแก แคแแแแแแแก แแแแแขแแแ:
hadoopConf = sc._jsc.hadoopConfiguration()
hadoopConf.set("parquet.enable.summary-metadata", "false")
hadoopConf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
แ แแแแ แช แฉแแแก, แแฎแแ แงแแแแแแฆแ แแฎแแแ แแแ แแแขแแก แแแแแงแแคแ แแแแขแแแ แกแแแแแแ แแแแแคแแแแก แกแแฅแแฆแแแแแก, แกแแแแช แแแแแแแกแแแฃแแแ แแฆแแก แแแแแแแแแแแฃแแ แแแแแชแแแแแ. แฉแแแ แฌแแแแกแฌแแ แแแแ แฃแแแ, แ แแ แแ แแ แกแแแแแแแก แแแแแงแแคแแแ แแแแแชแแแแ แขแแแแก แแแแคแแแฅแขแแ.
แแแแ แแ แแแกแแแ แแ แแแแแแ แแแแฅแแก. แแฎแแ แแแแแแ แกแฅแแแ แแ แแ แแก แชแแแแแแ, แฃแคแ แ แแแขแแช, Hive-แแก แชแฎแ แแแก แแฅแแก แแ แแกแฌแแ แ แกแฅแแแ, แ แแแแแ แงแแแแแ แแฎแแแ แแแแแงแแคแ, แกแแแแ แแฃแแแ, แกแฅแแแแจแ แแแแแฎแแแฏแแแแก แแงแแแแแก.
แชแฎแ แแแ แฎแแแแฎแแ แฃแแแ แแแแ แแแแกแขแ แแ แแ. แแก แจแแแซแแแแ แแแแแแแแก แแแ แขแแแแ: แฎแแแแฎแแ แฌแแแแแแฎแแ แแแขแ แแแแก แแแ แแแขแ, แแแฆแแ แกแฅแแแ แแ แจแแฅแแแแแ แแแกแแ แแแงแ แแแแแแ DDL, แ แแแแแแแช แฎแแแแฎแแ แแแแ แแแแกแขแ แแ แแ แกแแฅแแฆแแแแ Hive-แจแ, แ แแแแ แช แแแ แ แชแฎแ แแแ, แแแแแแฎแแแ แกแแแแแแ แแแขแ แแแแก แกแฅแแแ.
แแแแแฎแ แแ แแแแแแ แแแแฅแแก. แ แแแแกแแช แชแฎแ แแแ แแแ แแแแแ แแแแแ แแแแกแขแ แแ แแ, แกแแแ แแก แแแแแงแ แแแแแ. แแฎแแ แฉแแแ แแแแแแ แแแแแแแแ แแแแก แแ แฃแแแ แแแแฎแกแแแแแก, แ แแ แแแ แแแขแแก แแแแแแ แจแแแซแแแแ แแแแฌแงแแก แกแแแแแแแแแแ, แ แแแแแแแช แแแฃแจแแแแแแแ Hive-แกแแแแก. แแแแแแแแแ, Spark แแแแแแก แฎแแแแแก, แ แแแแแแกแแช แแแ แแแแแแแแแแก "corrupt_record" แแแแจแ. แแกแแแ แแแแ แแ แจแแแซแแแแ แแแ แแแแกแขแ แแ แแแก Hive-แจแ แแแฅแชแแแแก แแแ แแจแ.
แแแแก แชแแแแ, แฉแแแ แแแฆแแแ แกแฅแแแแก:
f_def = ""
for f in pf.dtypes:
if f[0] != "date_load":
f_def = f_def + "," + f[0].replace("_corrupt_record", "`_corrupt_record`") + " " + f[1].replace(":", "`:").replace("<", "<`").replace(",", ",`").replace("array<`", "array<")
table_define = "CREATE EXTERNAL TABLE jsonevolvtable (" + f_def[1:] + " ) "
table_define = table_define + "PARTITIONED BY (date_load string) STORED AS PARQUET LOCATION '/user/admin/testJson/testSchemaEvolution/pq/'"
hc.sql("drop table if exists jsonevolvtable")
hc.sql(table_define)
แแแแ ("_corrupt_record", "`_corrupt_record") + " " + f[1].replace(":", "`:").replace("<", "<`").replace(",", ",`").replace("แแแกแแแ<`", "แแแกแแแ<") แฎแแแก แฃแกแแคแ แแฎแ DDL-แก, แแแฃ แแแชแแแแ:
create table tname (_field1 string, 1field string)
แแแแแแแก แกแแฎแแแแแแ, แ แแแแ แแชแแ "_field1, 1field", แแฅแแแแแ แฃแกแแคแ แแฎแ DDL, แกแแแแช แแแแแแแก แกแแฎแแแแแ แแ แแ แแก: แจแแฅแแแแแ แชแฎแ แแแ `tname` (`_field1` string, `1field` string).
แฉแแแแแ แแแแฎแแ: แ แแแแ แกแฌแแ แแ แแแแแฆแแ แแแแแชแแแแ แฉแแ แฉแ แกแ แฃแแ แกแฅแแแแ (pf แแแแแ)? แ แแแแ แแแแแฆแแ แแก pf? แแก แแแฎแฃแแ แแ แแแแแแแ. แฎแแแแฎแแ แฌแแแแแแฎแแ แงแแแแ แแแแแงแแคแแก แกแฅแแแ แกแแฅแแฆแแแแแแแ แกแแแแแแ แแแขแ แแแแก แแแ แแแขแแก แคแแแแแแแ? แแก แแแแแแ แงแแแแแแ แฃแกแแคแ แแฎแ, แแแแ แแ แ แแฃแแแ.
แกแฅแแแ แฃแแแ Hive-แจแแ. แแฅแแแ แจแแแแซแแแแ แแแแฆแแ แแฎแแแ แกแฅแแแ แแแแแ แชแฎแ แแแแกแ แแ แแฎแแแ แแแแแงแแคแแก แกแฅแแแแก แแแแแแแแชแแแ. แแกแ แ แแ, แแฅแแแ แฃแแแ แแแฆแแ แชแฎแ แแแแก แกแฅแแแ Hive-แแแ แแ แแแแแแแจแแ แแ แแแ แแฎแแแ แแแแแงแแคแแก แกแฅแแแแกแแแ. แแก แจแแแซแแแแ แแแแแแแแก Hive-แแแ แขแแกแขแแก แแแขแแแแแแชแแแแแแก แฌแแแแแฎแแแ, แแ แแแแแ แกแแฅแแฆแแแแแจแ แจแแแแฎแแแ แแ แแ แแแ แแแแแงแแคแแก แแ แแแ แแฃแแแ แฌแแกแแแแแฎแแ Spark-แแก แแแแแงแแแแแแ.
แกแแแแแแแแแแจแ, แแ แแก แงแแแแแคแแ แ, แ แแช แแญแแ แแแแแ: แชแฎแ แแแแก แแ แแแแแแแฃแ แ แกแฅแแแ Hive-แจแ แแ แแฎแแแ แแแแแงแแคแ. แฉแแแแช แแแแฅแแก แแแแแชแแแแแ. แ แฉแแแ แแฎแแแแ แแฎแแแ แกแฅแแแแก แแแฆแแแ, แ แแแแแแช แแแ แแแแแแแก แแแฆแแแแแก แแแขแ แแแแก แกแฅแแแแก แแ แแฎแแ แแแแแแก แจแแฅแแแแแ แแแแแงแแคแแแแ:
from pyspark.sql import HiveContext
from pyspark.sql.functions import lit
hc = HiveContext(spark)
df = spark.read.json("...", dropFieldIfAllNull=True)
df.write.mode("overwrite").parquet(".../date_load=12-12-2019")
pe = hc.sql("select * from jsonevolvtable limit 1")
pe.write.mode("overwrite").parquet(".../fakePartiton/")
pf = spark.read.option("mergeSchema", True).parquet(".../date_load=12-12-2019/*", ".../fakePartiton/*")
แจแแแแแแ, แฉแแแ แแฅแแแแ แชแฎแ แแแแก แ แแแแกแขแ แแชแแแก DDL-แก, แ แแแแ แช แฌแแแ แคแ แแแแแแขแจแ.
แแฃ แแแแแ แฏแแญแแ แแฃแจแแแแก แกแฌแแ แแ, แแแ แซแแ, แแงแ แแแแชแแแแแแแชแแแก แแแขแแแ แแแ แแ แชแฎแ แแแ แกแฌแแ แแ แจแแแฅแแแ Hive-แจแ, แแแจแแ แแแแแฆแแแ แแแแแฎแแแแฃแ แชแฎแ แแแแก แกแฅแแแแก.
แแ แแแแ แแ แแแแแแ แแก แแ แแก, แ แแ แแฅแแแ แแ แจแแแแซแแแแ แฃแแ แแแแ แแแแแแขแแ แแแแแงแแคแ Hive แแแแแแแแ, แ แแแแแ แแก แแแคแฃแญแแแแ. แแฅแแแ แฃแแแ แแแซแฃแแแ Hive แจแแแกแฌแแ แแก แแแกแ แแแแแงแแคแแก แกแขแ แฃแฅแขแฃแ แ:
from pyspark.sql import HiveContext
hc = HiveContext(spark)
hc.sql("MSCK REPAIR TABLE " + db + "." + destTable)
JSON-แแก แฌแแแแแฎแแแกแ แแ แแแกแแ แแแคแฃแซแแแแฃแแ แแแขแ แแแแก แจแแฅแแแแก แแแ แขแแแ แแแแชแแแ แแฌแแแแก แแ แแแ แแ แแแแแแชแแขแฃแ แ แกแแ แแฃแแแแแแก แแแแแแแฎแแแก, แ แแแแแแ แแแแแฌแงแแแขแแแแแแแแช แชแแแแ แฃแแแ แแแซแแแแแ. แแ แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แแแแแฌแงแแแขแแแแแแแ แแแ แขแแแแ, แแแ แแแแแแก แแแแ แแ แ แกแญแแ แแแแ.
แแแขแ แแแแก แแจแแแแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ แแแแแฌแแ:
- แแแแแแขแแ แขแแฎแ แแแ แแแขแ แแแแจแ, แแแแชแแแแ แกแแ แแแกแแก แคแแแแแแ
- แแแฃแแแแแแแแ แชแแ แแแ แแแแแแก แฌแงแแ แแก แแแแแชแแแแแจแ, แ แแแแแแแช Spark-แแ แแแ แแคแ
- แแแแแแขแแแแ แแแ แขแแแ แขแแแแแ แกแขแ แแแแแ
- แแแแแแงแแแแแ แแแแแแแก แกแแฎแแแแแ แแแขแแ แ แ แแแแ แแแแจแ
- แแแแแชแแแแ แชแแแแ แแขแแแ แแแ แแ แชแฎแ แแแแก แ แแแแกแขแ แแชแแ Hive-แจแ (DDL แแแแแ)
- แแ แแแแแแแฌแงแแแ แแแแแแแก แกแแฎแแแแแแก แแแฅแชแแแ, แ แแแแแแแช แจแแแซแแแแ แจแแฃแแแแกแแแแแ แแงแแก Hive-แแแ
- แแกแฌแแแแแ แ แแแแ แแแแแแฎแแแ แชแฎแ แแแแก แ แแแแกแขแ แแชแแ Hive-แจแ
แจแแฏแแแแแแ, แฉแแแ แแฆแแแแจแแแแ, แ แแ แแแฆแแแแแก แแแขแ แแแแแแก แแจแแแแแแก แแแแแฌแงแแแขแแแแแ แกแแแกแแ แแ แแแแแ แฎแแ แแแแแ. แแแแขแแ, แแแแฎแแ แชแแแแแแแก แกแแ แแฃแแแแแแก แจแแแแฎแแแแแจแ, แกแฏแแแก แแแฃแแแแจแแ แแแ แแแแแชแแแ แแแ แขแแแแ แก แฌแแ แแแขแแแฃแแ แแแแแชแแแแแแแ.
แแแแแแแแ แแ แกแขแแขแแแก แฌแแแแแฎแแแกแแแแก, แแแแแแแแแแแ, แ แแ แแแคแแ แแแชแแ แแฅแแแแแแแก แกแแกแแ แแแแแ แแฅแแแแ.
แฌแงแแ แ: www.habr.com