JSON 파일을 Spark로 읽을 때 _corrupt_record 오류가 발생함
이 JSON 파일을 가지고 있습니다.
{
"a": 1,
"b": 2
}
Python json.dump 메서드로 취득되었습니다.이제 이 파일을 pyspark를 사용하여 Spark의 DataFrame으로 읽어보겠습니다.설명서에 따라 이 작업을 수행합니다.
sc = SparkContext()
sqlc = SQLContext(sc)
df = sqlc.read.json my_file.json')
print df.show()
인쇄문에서는 다음과 같이 말하고 있습니다.
+---------------+
|_corrupt_record|
+---------------+
| {|
| "a": 1, |
| "b": 2|
| }|
+---------------+
무슨 일이 일어나고 있는지, 왜 파일이 올바르게 해석되지 않는지 아는 사람이 있습니까?
JSON 파일을 그대로 두는 경우(새 행 문자를 삭제하지 않음)\n
)를 포함합니다.multiLine=True
키워드 인수
sc = SparkContext()
sqlc = SQLContext(sc)
df = sqlc.read.json('my_file.json', multiLine=True)
print df.show()
입력 파일의 행마다 하나의 json 개체가 있어야 합니다. http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.json를 참조하십시오.
json 파일이 다음과 같은 경우 예상되는 데이터 프레임을 제공합니다.
{ "a": 1, "b": 2 }
{ "a": 3, "b": 4 }
....
df.show()
+---+---+
| a| b|
+---+---+
| 1| 2|
| 3| 4|
+---+---+
Spark 2.2+에서는 다음 명령을 사용하여 multiline의 json 파일을 읽을 수 있습니다.
val dataframe = spark.read.option("multiline",true).json( " filePath ")
한 줄에 json 객체가 있다면
val dataframe = spark.read.json(filepath)
@Bernhard의 훌륭한 답변에 추가
# original file was written with pretty-print inside a list
with open("pretty-printed.json") as jsonfile:
js = json.load(jsonfile)
# write a new file with one object per line
with open("flattened.json", 'a') as outfile:
for d in js:
json.dump(d, outfile)
outfile.write('\n')
JSON 컬럼 String을 가지고 있지만 Python 표기법을 사용하고 있는 제 경험을 공유하겠습니다.이것은, Python 표기법을 사용하고 있는 것을 의미합니다.None
대신null
,False
대신false
그리고.True
대신true
.
이 열을 구문 분석할 때 스파크는 다음과 같은 열을 반환합니다._corrupt_record
그래서 JSON String을 해석하기 전에 Python 표기법을 표준 JSON 표기법으로 대체해야 했습니다.
df.withColumn("json_notation",
F.regexp_replace(F.regexp_replace(F.regexp_replace("_corrupt_record", "None", "null"), "False", "false") ,"True", "true")
이 변환 후에 나는 예를 들어 함수를 사용할 수 있었다.F.from_json()
에서json_notation
여기서 Pyspark는 JSON 객체를 올바르게 해석할 수 있었습니다.
이 문제가 발생하는 또 다른 이유는 파일 부호화일 수 있습니다.읽고 있는 파일이 예를 들어 라틴 인코딩으로 되어 있는 경우, 이 문제가 발생합니다.파일을 읽을 때 .option("encoding", "cp1252")을 사용해 보십시오.이것으로 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/35409539/corrupt-record-error-when-reading-a-json-file-into-spark
'programing' 카테고리의 다른 글
동기화된 AJAX 콜이 메모리 누수를 일으킬 가능성이 얼마나 됩니까? (0) | 2023.03.16 |
---|---|
PL/SQL Oracle 함수 또는 절차 작성을 위한 IS vs AS 키워드 (0) | 2023.03.16 |
XML에서 JavaScript 개체로 (0) | 2023.03.16 |
워드프레스에서 별도로 관리하는 두 메뉴를 하나로 통합하여 프런트 엔드 테마에 표시하는 방법은 무엇입니까? (0) | 2023.03.16 |
react-intl vs react-i18(React용)JS 국제화(i18n) (0) | 2023.03.16 |