阅读 Hive table 并将其转换为 Parquet Table
Read Hive table and transform it to Parquet Table
数据来自 Hive table,更准确地说
第一个table有属性
Serde Library org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat org.apache.hadoop.mapred.SequenceFileInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
此 Table 应转换为镶木地板并具有属性
Serde Library org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
执行以下 Scala Spark 代码:
val df = spark.sql("SELECT * FROM table")
df.write.format("parquet").mode("append").saveAsTable("table")
这仍然导致不需要的属性:
Serde Library org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat org.apache.hadoop.mapred.SequenceFileInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
希望有人能帮助我
您不能在同一个 table 中混合使用不同的文件格式,也不能更改其中包含数据的 table 的文件格式。 (更准确地说,你可以做这些事情,但是 Hive 和 Spark 都无法读取格式与元数据不匹配的数据。)
您应该将数据写入新的table,确保它符合您的期望,然后重命名或删除旧的table,最后将新的table重命名为旧名。例如:
CREATE TABLE new_table STORED AS PARQUET AS SELECT * FROM orig_table;
ALTER TABLE orig_table RENAME TO orig_table_backup;
ALTER TABLE new_table RENAME TO orig_table;
您可以直接在 Hive 会话中执行这些 SQL 语句,或者使用 spark.sql(...)
语句(一个接一个)从 Spark 中执行这些语句。
数据来自 Hive table,更准确地说
第一个table有属性
Serde Library org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat org.apache.hadoop.mapred.SequenceFileInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
此 Table 应转换为镶木地板并具有属性
Serde Library org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
执行以下 Scala Spark 代码:
val df = spark.sql("SELECT * FROM table")
df.write.format("parquet").mode("append").saveAsTable("table")
这仍然导致不需要的属性:
Serde Library org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat org.apache.hadoop.mapred.SequenceFileInputFormat
OutputFormat org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
希望有人能帮助我
您不能在同一个 table 中混合使用不同的文件格式,也不能更改其中包含数据的 table 的文件格式。 (更准确地说,你可以做这些事情,但是 Hive 和 Spark 都无法读取格式与元数据不匹配的数据。)
您应该将数据写入新的table,确保它符合您的期望,然后重命名或删除旧的table,最后将新的table重命名为旧名。例如:
CREATE TABLE new_table STORED AS PARQUET AS SELECT * FROM orig_table;
ALTER TABLE orig_table RENAME TO orig_table_backup;
ALTER TABLE new_table RENAME TO orig_table;
您可以直接在 Hive 会话中执行这些 SQL 语句,或者使用 spark.sql(...)
语句(一个接一个)从 Spark 中执行这些语句。