gpt4 book ai didi

apache-spark - Spark DataFrame ORC Hive 表读取问题

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

我正在尝试读取 Spark 中的 Hive 表。以下是 Hive 表格式:

# Storage Information       
SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde
InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
Compressed: No
Num Buckets: -1
Bucket Columns: []
Sort Columns: []
Storage Desc Params:
field.delim \u0001
serialization.format \u0001

当我尝试使用带有以下命令的 Spark SQL 读取它时:

val c = hiveContext.sql("""select  
a
from c_db.c cs
where dt >= '2016-05-12' """)
c. show

我收到以下警告:-

18/07/02 18:02:02 WARN ReaderImpl: Cannot find field for: a in _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35, _col36, _col37, _col38, _col39, _col40, _col41, _col42, _col43, _col44, _col45, _col46, _col47, _col48, _col49, _col50, _col51, _col52, _col53, _col54, _col55, _col56, _col57, _col58, _col59, _col60, _col61, _col62, _col63, _col64, _col65, _col66, _col67,

读取开始,但速度很慢并且网络超时。

当我尝试直接读取 Hive 表目录时出现以下错误。

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
hiveContext.setConf("spark.sql.orc.filterPushdown", "true")
val c = hiveContext.read.format("orc").load("/a/warehouse/c_db.db/c")
c.select("a").show()

org.apache.spark.sql.AnalysisException: cannot resolve 'a' given input columns: [_col18, _col3, _col8, _col66, _col45, _col42, _col31, _col17, _col52, _col58, _col50, _col26, _col63, _col12, _col27, _col23, _col6, _col28, _col54, _col48, _col33, _col56, _col22, _col35, _col44, _col67, _col15, _col32, _col9, _col11, _col41, _col20, _col2, _col25, _col24, _col64, _col40, _col34, _col61, _col49, _col14, _col13, _col19, _col43, _col65, _col29, _col10, _col7, _col21, _col39, _col46, _col4, _col5, _col62, _col0, _col30, _col47, trans_dt, _col57, _col16, _col36, _col38, _col59, _col1, _col37, _col55, _col51, _col60, _col53]; at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42)

我可以将 Hive 表转换为 TextInputFormat,但这应该是我最后的选择,因为我想利用 OrcInputFormat 的优势来压缩表的大小。

非常感谢您的建议。

最佳答案

我找到了以这种方式阅读表格的解决方法:

val schema = spark.table("db.name").schema

spark.read.schema(schema).orc("/path/to/table")

关于apache-spark - Spark DataFrame ORC Hive 表读取问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146549/

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