SparkSQL에서 마루판 파일을 쓰고 읽으려고합니다. 스키마 진화의 이유로, 필자의 글과 읽기에 Avro 스키마를 사용하고 싶다.SparkSQL의 Avro 스키마 및 마루판 형식 읽기/쓰기
제 생각에 이것은 Spark 외부에서 (또는 Spark 내에서 수동으로) 가능합니다. AvroParquetWriter 및 Avro의 일반 API 그러나 SparkSQL의 write() 및 read() 메서드 (DataFrameWriter 및 DataFrameReader와 함께 작동)를 사용하고 SparkSQL과 잘 통합되어 있습니다 (데이터 세트를 작성하고 읽음).
나는이 일을하는 방법을 알아낼 수 없으며, 이것이 가능한지 궁금해하고 있습니다. SparkSQL 마루판 형식이 지원하는 유일한 옵션은 "압축"및 "mergeSchema"입니다. 즉, 대체 스키마 형식이나 대체 스키마를 지정하는 옵션이 없습니다. 즉, SparkSQL API를 사용하여 Avro 스키마를 사용하여 Parquet 파일을 읽거나 쓸 수있는 방법이 없다는 것입니다. 하지만 아마도 나는 뭔가를 놓친 것일까 요?
분명히하기 위해 기본적으로 Avro 스키마를 쓰기에 대한 파르 케타 메타 데이터에 추가하고 읽기 (마루판 형식 -> Avro 스키마 -> SparkSQL 내부 형식)에 하나 더 많은 변환 계층을 추가하지만 구체적으로 누락 된 열에 대한 기본값을 추가 할 수 있습니다 (Avro 스키마는 지원하지만 파르 케 스키마는 지원하지 않음).
또한 Avro를 마루로 변환하거나 Avquet을 마루로 변환하는 방법을 찾고 있지 않으며 SparkSQL에서 일반 Avro를 읽고 쓸 수있는 방법을 찾고 있지 않습니다. databricks/spark-avro를 사용하여이 작업을 수행 할 수 있습니다.
은 당신이 어떠한 진전을 달성하는 데 도움이 희망? – pcejrowski
@pcejrowski 아니, 그 이후로 다른 것들로 옮겨 갔지만, 당시에는 SparkSQL을 사용하여 즉시 사용할 수있는 방법을 찾을 수 없었습니다. 나는 그들이 어떤 일을하는 것처럼 커스텀 데이터 소스를 작성하는 것이 가능할 것이라고 생각한다 (https://mapr.com/blog/spark-data-source-api-extending-our- –
@JasonEvans 내가 흥미 롭다. 어떻게 sqoop이 마루 데이터 내 avsc 스키마를 덤프하는지 궁금하다. –