小编Jan*_*gcy的帖子

Pyspark - 将json字符串转换为DataFrame

我有一个包含简单json的test2.json文件:

{  "Name": "something",  "Url": "https://stackoverflow.com",  "Author": "jangcy",  "BlogEntries": 100,  "Caller": "jangcy"}
Run Code Online (Sandbox Code Playgroud)

我已将文件上传到blob存储,然后从中创建一个DataFrame:

df = spark.read.json("/example/data/test2.json")
Run Code Online (Sandbox Code Playgroud)

然后我可以毫无问题地看到它:

df.show()
+------+-----------+------+---------+--------------------+
|Author|BlogEntries|Caller|     Name|                 Url|
+------+-----------+------+---------+--------------------+
|jangcy|        100|jangcy|something|https://stackover...|
+------+-----------+------+---------+--------------------+
Run Code Online (Sandbox Code Playgroud)

第二种情况:我在笔记本中声明了相同的json字符串:

newJson = '{  "Name": "something",  "Url": "https://stackoverflow.com",  "Author": "jangcy",  "BlogEntries": 100,  "Caller": "jangcy"}'
Run Code Online (Sandbox Code Playgroud)

我可以打印等等.但是现在如果我想从它创建一个DataFrame:

df = spark.read.json(newJson)
Run Code Online (Sandbox Code Playgroud)

我得到'绝对URI中的相对路径'错误:

'java.net.URISyntaxException: Relative path in absolute URI: {  "Name":%20%22something%22,%20%20%22Url%22:%20%22https:/stackoverflow.com%22,%20%20%22Author%22:%20%22jangcy%22,%20%20%22BlogEntries%22:%20100,%20%20%22Caller%22:%20%22jangcy%22%7D'
Traceback (most recent call last):
  File "/usr/hdp/current/spark2-client/python/pyspark/sql/readwriter.py", line 249, in json
    return self._df(self._jreader.json(self._spark._sc._jvm.PythonUtils.toSeq(path)))
  File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/usr/hdp/current/spark2-client/python/pyspark/sql/utils.py", line 79, …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark jupyter-notebook

5
推荐指数
1
解决办法
7996
查看次数

标签 统计

apache-spark ×1

jupyter-notebook ×1

pyspark ×1

python ×1