gpt4 book ai didi

scala - 由 spark 编写的 Parquet 文件中的 Athena/Hive 时间戳

转载 作者:行者123 更新时间:2023-12-05 06:33:28 26 4
gpt4 key购买 nike

我们正在从 spark 写入文件并从 Athena/Hive 读取。使用配置单元时,我们遇到了时间戳问题。

 scala> val someDF = Seq((8, "2018-06-06 11:42:43")).toDF("number", "word")
someDF: org.apache.spark.sql.DataFrame = [number: int, word: string]

scala> someDF.coalesce(1).write.mode("overwrite").option("delimiter", "\u0001").save("s3://test/")

这创建了一个 parquet 文件,我创建了一个表

CREATE EXTERNAL TABLE `test5`(
`number` int,
`word` timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\u0001'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://test/'

选择查询失败问题:HIVE_BAD_DATA:parquet 中的字段字类型 BINARY 与表模式中定义的类型时间戳不兼容

在使用普通 csv 文件进行测试时同样有效。

scala>someDF.coalesce(1).write.format("com.databricks.spark.csv").mode("overwrite").option("delimiter", "\u0001").save("s3://test")

Table:
CREATE EXTERNAL TABLE `test7`(
`number` int,
`word` timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\u0001'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://test/'

当我们把它写成 parquet 文件时,你能帮忙解决一下出了什么问题吗?

最佳答案

我认为这是 Hive 存储 Parquet 时间戳的一个众所周知的错误 in a way that is incompatible with other tools .在使用 Impala 检索我用 Spark 编写的 Hive 数据时,我遇到了类似的问题。我相信this was resolved在 Spark 2.3 中。

关于scala - 由 spark 编写的 Parquet 文件中的 Athena/Hive 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711525/

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