scala—如何读取包含json字符串的列的配置单元表?

5hcedyr0  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(379)

我有一个配置单元表列(json\u string),它有大约1000行,其中每行都是相同结构的json。我正在尝试将json读入dataframe,如下所示

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

但它抛出了以下例外

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

有没有什么方法可以像我们使用通配符读取json文件那样将所有行读入dataframe

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

qgelzfjb1#

我认为您要求的是像往常一样读取配置单元表,并使用from\ json函数转换json列。
from\ json(e:column,schema:structtype):column将包含json字符串的列解析为具有指定模式的structtype。如果是不可解析的字符串,则返回null。
给你使用 sqlContext 在您的代码中,恐怕您使用的是spark<2.1.0,但它不提供 from_json (在2.1.0中添加)。
然后,解决方案是使用自定义用户定义函数(udf)自己进行解析。
val df=sqlcontext.read.json(“从json\表中选择json\字符串”)
由于json操作符需要一个或多个指向磁盘上json文件的路径(而不是对配置单元表执行查询的结果),所以上述方法不起作用。
json(路径:string*):dataframe加载一个json文件(json行文本格式或换行分隔的json)并将结果作为dataframe返回。

相关问题