gpt4 book ai didi

hive - Spark SQL HiveContext-saveAsTable创建错误的架构

转载 作者:行者123 更新时间:2023-12-04 12:06:53 25 4
gpt4 key购买 nike

我尝试将数据帧存储到Spark 1.3.0(PySpark)中的持久性Hive表中。这是我的代码:

sc = SparkContext(appName="HiveTest")
hc = HiveContext(sc)
peopleRDD = sc.parallelize(['{"name":"Yin","age":30}'])
peopleDF = hc.jsonRDD(peopleRDD)
peopleDF.printSchema()
#root
# |-- age: long (nullable = true)
# |-- name: string (nullable = true)
peopleDF.saveAsTable("peopleHive")

我期望的Hive输出表是:
Column  Data Type   Comments
age long from deserializer
name string from deserializer

但是上面代码的实际输出Hive表是:
Column  Data Type       Comments
col array<string> from deserializer

为什么Hive表与DataFrame的架构不同?如何实现预期的输出?

最佳答案

这不是架构是错误的。 Hive无法正确读取由Spark创建的表,因为它甚至还没有正确的 Parquet Serde。
如果执行sqlCtx.sql('desc peopleHive').show(),它将显示正确的架构。
或者,您可以使用spark-sql客户端而不是hive。您还可以使用create table语法来创建外部表,该外部表的工作原理与Hive相同,但是Spark对 Parquet 的支持要好得多。

关于hive - Spark SQL HiveContext-saveAsTable创建错误的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30234278/

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