在 Scala 中将 CSV 文件转换为 AVRO

Convert CSV file to AVRO in scala

我是 Scala 新手。我正在尝试将 CSV 文件转换为 avro 格式。我试图 google 关于这个但找不到任何东西。我已经给出了我使用的示例输入文件和 AVSC 格式(再次来自 google)。

{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}

示例文件:

name_1,12,yellow
name_2,22,red
name_3,32,green

此外,我怎样才能将其扩展为一个 Control A 分隔文件。

最明显的解决方案是使用数据块中的 spark-avro。 它看起来像这样:

import com.databricks.spark.avro._
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().master("local").getOrCreate()
val df = spark.read.format("csv").load("data.csv")
df.write.avro("converted.avro")

类似仅用于测试目的的替代方案,您可以使用 this script on python