2017-06-28 41 views
0

我有一个配置单元表列(Json_String字符串)它有大约1000行,其中每行是一个结构相同的Json。我试图在以数据帧读取JSON如下如何阅读具有JSON字符串的列的Hive表?

val df = sqlContext.read.json("select Json_String from json_table") 

但它抛出了以下异常

java.io.IOException: No input paths specified in job 

有没有什么办法来读取所有的行中数据帧,因为我们做使用JSON使用通配符文件

val df = sqlContext.read.json("file:///home/*.json") 

回答

1

我想你问的是阅读蜂巢表与往常一样,用from_json函数变换JSON列。

from_json(E:柱,模式:StructType):柱解析包含JSON字符串与指定模式的StructType一列。对于不可解析的字符串,返回null。

鉴于你在你的代码中使用sqlContext,我怕你使用星火< 2.1.0,然后不提供from_json(这是在2.1.0添加)。

然后,解决方案是使用自定义用户定义的函数(UDF)自己进行解析。

VAL DF = sqlContext.read.json( “选择从json_table Json_String”)

上面将无法工作,因为json运营商期望磁盘上的一个或多个路径来JSON文件(不作为对Hive表执行查询的结果)。

JSON(路径:字符串*):数据帧加载一个JSON文件(JSON行文本格式或新行分隔JSON)并返回结果作为数据帧。