Может ли кто-нибудь помочь мне прочитать схему avro (.avsc) через Pyspark и применить ее при записи кадра данных в целевое хранилище? Все мои схемы таблиц targetr предоставляются в виде файлов .avsc, и мне нужно предоставить эту пользовательскую схему при сохранении моего фрейма данных в Pyspark. Я знаю, что есть такие библиотеки, как spark-avro из databricks. Но все примеры даны на Scala.
Применение схемы Avro (.avsc) в Pyspark
Ответы (1)
С этим файлом /tmp/test.avsc
{
"type": "record",
"namespace": "com.example",
"name": "FullName",
"fields": [
{ "name": "first", "type": "string" },
{ "name": "last", "type": "string" }
]
}
и такой кадр данных:
df = spark.createDataFrame([{"first": "john", "last": "parker" }], StructType([StructField("first", StringType()), StructField("last", StringType())]))
в результате этого:
+-----+------+
|first| last|
+-----+------+
| john|parker|
+-----+------+
вы можете сделать это, чтобы применить схему записи:
jsonFormatSchema = open("/tmp/test.avsc", "r").read()
df.write.format("avro").options(avroSchema=jsonFormatSchema).save("/tmp/avro")
и аналогично применять схему чтения:
spark.read.format('avro').options(avroSchema=jsonFormatSchema).load("/tmp/avro")
Более подробная информация доступна здесь, где, кстати, примеров Python более чем достаточно: https://spark.apache.org/docs/latest/sql-data-sources-avro.html
person
Matt
schedule
25.03.2021
Я хочу писать как паркет, а не как авро. Этот пример для написания как avro
- person ASHISH M.G; 26.03.2021
хорошо, ваш вопрос заключался в том, как применить схему, и я дал вам ответ на этот вопрос, так что я думаю, вы можете просто игнорировать часть письма.
- person Matt; 26.03.2021