gpt4 book ai didi

java - Spark数据集获取与整数列标题相同的数据

转载 作者:行者123 更新时间:2023-12-01 21:16:02 25 4
gpt4 key购买 nike

我正在尝试通过创建 Spark 数据集,通过 java 中的 Spark 读取配置单元表。对于具有字符串标题的所有列,数据都能正确读取,但对于整数标题,spark 会获取与标题相同的列数据。该表是在 parquet 文件上创建的外部表。

我的 hive 表:

CREATE EXTERNAL TABLE `myTable`(`tester` int, `testfloat` double, `testfloat1` double, `1` double, `0` double, `455` int, `100341` int, `1String2` double, `1String3` int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'file:/myFolderLocation/OfParquetFolder'
TBLPROPERTIES (
'transient_lastDdlTime' = '2174197412'
)

文件内容:

tester    testFloat    testFloat1    1    0    455    100341    1String2    1String3
1 1 1.2 1.2 1.2 1 -1 1 1
2 2 1.4 1.4 1.4 2 2 2
3 3.1 1.6 1.6 1.6 3 12 3 3

Hive 表已正确创建,

1   1.0 1.2 1.2 1.2 1   -1  1.0 1
2 2.0 1.4 1.4 1.4 2 NULL 2.0 2
3 3.1 1.6 1.6 1.6 3 12 3.0 3

但是当我在其上创建 Spark 数据集时,数据集架构:

 |-- tester: integer (nullable = true)
|-- testfloat: double (nullable = true)
|-- testfloat1: double (nullable = true)
|-- 1: double (nullable = true)
|-- 0: double (nullable = true)
|-- 455: integer (nullable = true)
|-- 100341: integer (nullable = true)
|-- 1string2: double (nullable = true)
|-- 1string3: integer (nullable = true)

数据集.show()

+------+---------+----------+---+---+---+------+--------+--------+
|tester|testfloat|testfloat1| 1| 0|455|100341|1string2|1string3|
+------+---------+----------+---+---+---+------+--------+--------+
| 1| 1.0| 1.2|1.0|0.0|455|100341| 1.0| 1|
| 2| 2.0| 1.4|1.0|0.0|455|100341| 2.0| 2|
| 3| 3.1| 1.6|1.0|0.0|455|100341| 3.0| 3|
+------+---------+----------+---+---+---+------+--------+--------+

未正确获取具有整数标题名称的列。

这是由于任何 Spark 限制吗?

我的 Spark 版本:2.4.4 scala 2.11配置单元版本:1.2.1000

最佳答案

无法使用 Spark 2.1 重现错误。

您可以尝试添加以下 Spark 配置吗?

--conf spark.sql.hive.convertMetastoreParquet=false

并加载您的数据:

spark.table("myTable").show

我尝试重现此错误时的结果:

+-----+---+---+
|a |b |123|
+-----+---+---+
|hello|1 |2 |
+-----+---+---+

打印模式:

root
|-- a: string (nullable = true)
|-- b: integer (nullable = true)
|-- 123: integer (nullable = true)

关于java - Spark数据集获取与整数列标题相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58874305/

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