gpt4 book ai didi

apache-spark - 输出 Hive 表是分桶的,但 Spark 目前不填充与 Hive 兼容的分桶输出

转载 作者:行者123 更新时间:2023-12-05 06:22:01 27 4
gpt4 key购买 nike

我有一个 Apache Spark(v2.4.2) 数据框,我想将这个数据框插入到一个配置单元表中。

df = spark.sparkContext.parallelize([["c1",21, 3], ["c1",32,4], ["c2",4,40089], ["c2",439,6889]]).toDF(["c", "n", "v"])
df.createOrReplaceTempView("df")

然后我创建了一个配置单元表:

 spark.sql("create table if not exists sample_bucket(n INT, v INT)
partitioned by (c STRING) CLUSTERED BY(n) INTO 3 BUCKETS")

然后我尝试将数据帧 df 中的数据插入到 sample_bucket 表中:

 spark.sql("INSERT OVERWRITE table SAMPLE_BUCKET PARTITION(c)  select n, v, c from df")

这给了我一个错误,说:

 Output Hive table `default`.`sample_bucket` is bucketed but Spark currently 
does NOT populate bucketed output which is compatible with Hive.;

我试了几种方法都不管用,其中一个是:

 spark.sql("set hive.exec.dynamic.partition.mode=nonstrict")
spark.sql("set hive.enforce.bucketing=true")
spark.sql("INSERT OVERWRITE table SAMPLE_BUCKET PARTITION(c) select n, v, c from df cluster by n")

但是没有运气,任何人都可以帮助我!

最佳答案

Spark(当前最后一个 2.4.5)不完全支持 Hive 分桶表。您可以读取分桶表(没有任何分桶效应),甚至可以将其插入其中(在这种情况下,分桶将被忽略,进一步的 Hive 读取可能会出现无法预料的行为)。

参见 https://issues.apache.org/jira/browse/SPARK-19256

关于apache-spark - 输出 Hive 表是分桶的,但 Spark 目前不填充与 Hive 兼容的分桶输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59474331/

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