数据帧字符串到Hive表Bigint - 如何转换

问题描述 投票:0回答:1

Spark:1.6,Scala,Hive

我有一个数据帧DF.printschema

root
 |-- rundatetime: string (nullable = true)
 |-- day_cunt: String (nullable = true)
 |-- my_key: integer (nullable = true)

DF.show()

rundatetime             |day_cunt | my_key
2017-04-21 11:00:06     | 5       |10
2017-04-21 12:10:06     | 15      |1000

我的蜂巢表是

rundatetime String,
day_cunt    BigInt,
my_key      Int
Stored as Parquet;

如何将数据帧值保存到Hive表?请注意DF和hive表数据类型不同。

scala hive spark-dataframe parquet
1个回答
0
投票

BigInt不是supported data typeSpark DataFrames

您可以通过将day_count转换为Long来创建中间数据框:

val newDF = df.select($"rundatetime", $"day_count".cast("Long"), $"my_key")

使用cast("BigInt")进行投射不会抛出错误,但实际上只会投射到Long数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.