[SCALA] 아파치 스파크와 JSON 읽기 -`corrupt_record`
SCALA아파치 스파크와 JSON 읽기 -`corrupt_record`
내가 JSON 파일이이 같은 그 모습 노드 :
[{"toid":"osgb4000000031043205","point":[508180.748,195333.973],"index":1}
,{"toid":"osgb4000000031043206","point":[508163.122,195316.627],"index":2}
,{"toid":"osgb4000000031043207","point":[508172.075,195325.719],"index":3}
,{"toid":"osgb4000000031043208","point":[508513,196023],"index":4}]
본인은 파이썬이 기록을 조작 할 수 있어요.
나는 스파크 쉘을 통해 스칼라에서이 파일을 읽으려고하고있다.
이 튜토리얼에서, 나는 sqlContext.read.json를 통해 JSON을 읽을 수 있음을 볼 수있다
val vfile = sqlContext.read.json("path/to/file/nodes.json")
그러나, corrupt_record 오류에서이 결과 :
vfile: org.apache.spark.sql.DataFrame = [_corrupt_record: string]
캔 사람이 오류에 도움이 되거? 본인은 다른 응용 프로그램과 파일을 사용하고 난 그것이 부패하고 소리 JSON되지 않습니다 확신 할 수 있습니다.
해결법
-
==============================
1.당신이 통과 할 수 있도록 스파크, 최상위의 기록에 JSON 배열을 읽을 수 없습니다 :
당신이 통과 할 수 있도록 스파크, 최상위의 기록에 JSON 배열을 읽을 수 없습니다 :
{"toid":"osgb4000000031043205","point":[508180.748,195333.973],"index":1} {"toid":"osgb4000000031043206","point":[508163.122,195316.627],"index":2} {"toid":"osgb4000000031043207","point":[508172.075,195325.719],"index":3} {"toid":"osgb4000000031043208","point":[508513,196023],"index":4}
그것은 당신이 언급하고있는 튜토리얼에서 설명한 것 같이
추론은 매우 간단합니다. 스파크는 (대략 말, 개체 당) 자신의 처리를 배포 할 수 있도록, JSON-기관의 많은 (한 줄에 엔티티)로 파일을 전달할 것으로 기대하고있다.
거기에 더 많은 빛 말하면, 여기 견적 양식을 공식 문서입니다
이 형식은 JSONL이라고합니다. 기본적으로는 CSV에 대한 대안입니다.
-
==============================
2.DataFrame로 여러 줄 JSON을 읽으려면 :
DataFrame로 여러 줄 JSON을 읽으려면 :
val spark = SparkSession.builder().getOrCreate() val df = spark.read.json(spark.sparkContext.wholeTextFiles("file.json").values)
이러한 방식으로 큰 파일을 읽는 것은 wholeTextFiles 워드 프로세서에서 사용하지 않는 것이 좋습니다
-
==============================
3.스파크는 "JSON 라인 형식 '이 아닌 일반적인 JSON 형식을 예상하고, 우리는 지정하여 일반적인 JSON을 읽어 불꽃을 알 수 있습니다 :
스파크는 "JSON 라인 형식 '이 아닌 일반적인 JSON 형식을 예상하고, 우리는 지정하여 일반적인 JSON을 읽어 불꽃을 알 수 있습니다 :
val df = spark.read.option("multiline", "true").json("<file>")
-
==============================
4.저도 같은 문제로 실행합니다. 나는 같은 구성에 sparkContext 및 sparkSql을 사용 :
저도 같은 문제로 실행합니다. 나는 같은 구성에 sparkContext 및 sparkSql을 사용 :
val conf = new SparkConf() .setMaster("local[1]") .setAppName("Simple Application") val sc = new SparkContext(conf) val spark = SparkSession .builder() .config(conf) .getOrCreate()
: 파일 - 그럼, 스파크 컨텍스트를 사용하여 나는 (파일 경로 JSON)을 전체 JSON을 읽어
val jsonRDD = sc.wholeTextFiles(JSON).map(x => x._2)
당신은 미래의 선택에 대한 스키마를 만들 수 있습니다, 필터 ...
val schema = StructType( List( StructField("toid", StringType, nullable = true), StructField("point", ArrayType(DoubleType), nullable = true), StructField("index", DoubleType, nullable = true) ))
스파크 SQL을 사용하여 DataFrame 만들기 :
var df: DataFrame = spark.read.schema(schema).json(jsonRDD).toDF()
사용 쇼 printSchema을 테스트 :
df.show() df.printSchema()
SBT 빌드 파일 :
name := "spark-single" version := "1.0" scalaVersion := "2.11.7" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.2" libraryDependencies +="org.apache.spark" %% "spark-sql" % "2.0.2"
from https://stackoverflow.com/questions/38895057/reading-json-with-apache-spark-corrupt-record by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 스칼라에서 두 문자열을 비교? (0) | 2020.01.09 |
---|---|
[SCALA] 정확히 싱글 타입 무엇입니까? (0) | 2020.01.02 |
[SCALA] 스칼라의 인수로 유닛 인수없이 기능, (0) | 2019.12.09 |
[SCALA] 추상 형식의 멤버 콘크리트 클래스 (0) | 2019.12.07 |
[SCALA] 누군가가 나에게 스칼라에서 암시 적 변환을 설명 할 수 있습니까? (0) | 2019.12.06 |