spark hivecontext处理查询问题

时间:2015-12-13 19:26:15

标签: json apache-spark hive hdfs hivecontext

我正在尝试从Jsons获取信息以在Hive中创建表。

这是我的Json架构:

root
|-- info: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- stations: array (nullable = true)
|    |    |    |-- element: struct (containsNull = true)
|    |    |    |    |-- bikes: string (nullable = true)
|    |    |    |    |-- id: string (nullable = true)
|    |    |    |    |-- slots: string (nullable = true)
|    |    |    |    |-- streetName: string (nullable = true)
|    |    |    |    |-- type: string (nullable = true)
|    |    |-- updateTime: long (nullable = true)
|-- date: string (nullable = true)
|-- numRecords: string (nullable = true)

我正在使用此查询:

sqlContext.sql("SELECT info.updateTime FROM STATIONS").foreach(println)

这就是我得到的:

[WrappedArray(1449098169, 1449108553, 1449098468)]

但我不知道如何将这些信息放在一个表中,以便在Hive控制台之后使用它。

我用过这个:

query.write.save("/home/cloudera/Desktop/select")

它创造了一些东西,但我不知道如何使用它。

由于

1 个答案:

答案 0 :(得分:1)

你可以通过多种方式实现......这取决于。

第一种方法:在查询中创建表格

sqlContext.sql("create table mytable AS SELECT info.updateTime FROM STATIONS")
// now you can query mytable

第二种方式:使用saveAsTable()

编写DataFrame
sqlContext.sql("SELECT info.updateTime FROM STATIONS").saveAsTable("othertable")