将 Hive 行对象转换为整数 Spark

Posted

技术标签:

【中文标题】将 Hive 行对象转换为整数 Spark【英文标题】:Convert Hive Row Object to Integer Spark 【发布时间】:2016-04-28 18:38:27 【问题描述】:

我正在尝试将配置单元列的输出转换为键值对。

sqlContext = HiveContext(sc)
id1 = sqlContext.sql("select instance_id from temp_table")
pairs1 = id1.map(lambda s: (int(s), 'Configuration'))

我收到以下错误

TypeError: int() argument must be a string or a number, not 'Row'

我不确定如何将 Hive Row 对象类型转换为整数,以便我可以将 map 函数应用于该对象

例如,id1 是一个数据框,当我将 collect() 应用于它时,它会返回

[Row(_c0=12616821)]

我需要从行对象中提取值。如果有任何与此问题相关的解决方案,请告诉我

【问题讨论】:

【参考方案1】:

我想出了一种从行对象中获取整数值的方法。最初我想应用 typecast 并将其转换为 int 和其他一些方法。但似乎我们可以通过应用索引来获取值

>> id1 = sqlContext.sql("select int(id) as id  from temp_table limit 1")
>> temp = df1.select('id').collect()

>> temp
[Row(id = 9331413)]

>> temp[0][0]
9331413

【讨论】:

以上是关于将 Hive 行对象转换为整数 Spark的主要内容,如果未能解决你的问题,请参考以下文章

将火花行对象转换为 java pojo

将 Hive 转换为 spark

将数据转换为 spark scala 中的类对象列表

HIVE Row Formats和SerDe

使用 Spark Scala 将 Sql Server 数据类型转换为 Hive 数据类型

将 Spark DataFrame 转换为 Pojo 对象