gpt4 book ai didi

apache-spark - 使用 bucketBy 的 Spark 模式与 Hive 不兼容

转载 作者:行者123 更新时间:2023-12-02 00:58:43 24 4
gpt4 key购买 nike

我正在使用 Spark 2.3 版使用 bucketBy 编写和保存数据帧.
该表是在 Hive 中创建的,但没有使用正确的架构。我无法从 Hive 表中选择任何数据。

(DF.write
.format('orc')
.bucketBy(20, 'col1')
.sortBy("col2")
.mode("overwrite")
.saveAsTable('EMP.bucketed_table1'))
我收到以下消息:

Persisting bucketed data source table emp.bucketed_table1 into Hive metastore in Spark SQL specific format, which is NOT compatible with Hive.


正在创建 Hive 架构,如下所示:
hive> desc EMP.bucketed_table1;
OK
col array<string> from deserializer
如何将数据帧保存和写入 Hive 表中以便以后查看?

最佳答案

虽然 Spark(至少在版本 <= 2.4 中)不直接支持 Hive 的分桶格式,如 here 所述和 here ,通过使用SparkSQL将数据加载到Hive中,可以让Spark输出Hive可读的分桶数据;按照你的例子,它会是这样的:

//enable Hive support when creating/configuring the spark session
val spark = SparkSession.builder().enableHiveSupport().getOrCreate()

//register DF as view that can be used with SparkSQL
DF.createOrReplaceTempView("bucketed_df")

//create Hive table, can also be done manually on Hive
val createTableSQL = "CREATE TABLE bucketed_table1 (col1 int, col2 string) CLUSTERED BY col1 INTO 20 BUCKETS STORED AS PARQUET"
spark.sql(createTableSQL)

//load data from DF into Hive, output parquet files will be bucketed and readable by Hive
spark.sql("INSERT INTO bucketed_table1 SELECT * FROM bucketed_df")

关于apache-spark - 使用 bucketBy 的 Spark 模式与 Hive 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com