Чтение файлов JSON из многострочного файла в pyspark

#python #apache-spark #pyspark #apache-spark-sql

#python #apache-spark #pyspark #apache-spark-sql

Вопрос:

Я изучаю spark на python. У меня есть файл JSON следующим образом:

   {
   "_class":"fdsfsdfsdfds",
   "n":"test ccorona",
   "fn":"ccorona",
   "ln":"ccorona",
   "un":"ccorona",
   "p":"line",
   "g":"ccorona",
   "l":"ccorona",
   "e":"ccorona",     
   },
  

и есть только этот код:

 df = spark.read.json("1.json")
df.show()
  

когда я запускаю show, я получаю это сообщение

 pyspark.sql.utils.AnalysisException: Since Spark 2.3, the queries from raw JSON/CSV files are disallowed when the
referenced columns only include the internal corrupt record column
(named _corrupt_record by default). For example:
spark.read.schema(schema).json(file).filter($"_corrupt_record".isNotNull).count()
and spark.read.schema(schema).json(file).select("_corrupt_record").show().
Instead, you can cache or save the parsed results and then send the same query.
For example, val df = spark.read.schema(schema).json(file).cache() and then
df.filter($"_corrupt_record".isNotNull).count().;
  

также

 df.printSchema()
root
 |-- _corrupt_record: string (nullable = true)
  

а также это

 df.select("fn")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/spark/python/pyspark/sql/dataframe.py", line 1421, in select
    jdf = self._jdf.select(self._jcols(*cols))
  File "/opt/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1304, in __call__
  File "/opt/spark/python/pyspark/sql/utils.py", line 134, in deco
    raise_from(converted)
  File "<string>", line 3, in raise_from
pyspark.sql.utils.AnalysisException: cannot resolve '`fn`' given input columns: [_corrupt_record];;
'Project ['fn]
 - Relation[_corrupt_record#168] json
  

Как я могу читать из нескольких строк для JSON SQLContext в spark?

Ответ №1:

Вот как вы читаете многострочный JSON:

 df = spark.read.option("multiLine", "true").option("mode", "PERMISSIVE").json("1.json")
  

Комментарии:

1. привет, спасибо, но df = spark.read.option(«многострочный», true).option(«режим», «РАЗРЕШАЮЩИЙ»).json(«1.json») Трассировка (последний последний вызов): файл «<stdin>», строка 1, в <module> Ошибка имени: имя «true» не определено

2. Попробуйте сейчас, «true» не было в кавычках.