目前正在为 10 kb 文件生成两个 avro 文件,如果我对实际文件 (30MB+) 遵循相同的操作,我将生成 n 个文件。
所以即使源文件很大,也需要一个只生成一两个 .avro 文件的解决方案。
还有什么方法可以避免手动声明列名。
目前的做法...
spark-shell --packages com.databricks:spark-csv_2.10:1.5.0,com.databricks:spark-avro_2.10:2.0.1
导入 org.apache.spark.sql.types.{StructType, StructField, StringType}
// 'co' 和 'id' 列名和类型的手动模式声明 val customSchema = StructType(Array( StructField("ind", StringType, true), StructField("co", StringType, true)))
val df = sqlContext.read.format("com.databricks.spark.csv").option("comment", "\"").option("quote", "|").schema(customSchema).load( “/tmp/file.txt”)
df.write.format("com.databricks.spark.avro").save("/tmp/avroout")
// 注意:/tmp/file.txt 是输入文件/目录,/tmp/avroout 是输出目录