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

Posted

技术标签:

【中文标题】数据框字符串到 Hive 表 Bigint - 如何转换【英文标题】:Dataframe string to Hive table Bigint - How to convert 【发布时间】:2017-04-28 15:06:03 【问题描述】:

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

我的 Hive 表是

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

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

【问题讨论】:

【参考方案1】:

BigInt 不是 supported data type 的 Spark DataFrames

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

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

使用cast("BigInt") 进行转换不会引发错误,但实际上只会转换为Long 数据类型。

【讨论】:

以上是关于数据框字符串到 Hive 表 Bigint - 如何转换的主要内容,如果未能解决你的问题,请参考以下文章

HIVE数据类型INT溢出,INT转BIGINT

sparksql写入表中,bigint类型显示null

编写Spark的UDF函数解决Hive表大数bigintdoublefloatdecimal等转字符串string时出现的科学计数法问题Java

编写Spark的UDF函数解决Hive表大数bigintdoublefloatdecimal等转字符串string时出现的科学计数法问题Java

hive 数据类型

Hive数据类型