Tôi đang cố gắng chuyển từ đọc tệp phẳng csv sang tệp avro trên tia lửa. sau đây https://github.com/databricks/spark-avro tôi sử dụng:Đọc danh sách kết hợp không được hỗ trợ từ một tệp Avro trong Apache Spark
import com.databricks.spark.avro._
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.avro("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro")
và nhận
java.lang.UnsupportedOperationException: This mix of union types is not supported (see README): ArrayBuffer(STRING)
các bang tập tin readme rõ:
thư viện này hỗ trợ đọc tất cả các loại Avro, với trừ phức tạp loại công đoàn. Nó sử dụng các bản đồ sau đây từ các loại Avro với các loại SQL Spark:
khi tôi cố gắng để textread cùng một tập tin tôi có thể thấy schema
val df = sc.textFile("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro")
df.take(2).foreach(println)
{ "tên": "log_record" , "type": "record", "fields": [{"name": "request", "type": {"type": "record", "name": "request_data", "fields": [{ "name": "datetime", "type": "string"}, {"name": "ip", "type": "string"}, {"name": "host", "type": "string "}, {" name ":" uri "," type ":" string "}, {" name ":" request_uri "," type ":" string "}, {" name ":" referer "," type ":" string "}, {" name ":" useragent "," type ":" string "}]}}
< ------- một đoạn trích của bài trả lời đầy đủ ------->
kể từ khi tôi có rất ít sự kiểm soát trên định dạng tôi nhận được những tập tin này trong, của tôi câu hỏi ở đây là - có cách nào mà một người nào đó được thử nghiệm và có thể đề xuất không?
tôi sử dụng dataproc gc với
TỔNG = sợi cụm spark vỏ --num-Chấp hành 4 --executor bộ nhớ 4G --executor-lõi 4 --packages com.databricks: spark -avro_2.10: 2.0.1, com.databricks: spark-csv_2.11: 1.3.0
bất kỳ trợ giúp sẽ được đánh giá rất cao .....
http://stackoverflow.com/questions/23944615/how-can-i-load-avros-in-spark-using-the-schema-on-board-the-avro-files – Simon
bạn có thể sử dụng newHadoopApi cho đọc tập tin avro - bạn sẽ cần sử dụng api lõi của tia lửa chứ không phải sql-api. bất kỳ lý do đặc biệt nào không sử dụng nó? –