我有一个可以正确读取的文件:
sqlContext.read.format('csv').options(header='false', inferSchema='true', delimiter = "\a", nullValue = '\\N').load('adl://resource.azuredatalakestore.net/datalake-prod/raw/something/data/something/date_part={}/{}'.format(elem[0], elem[1]))
问题在于没有标题,该标题实际上在另一个类型为avsc
的文件中,该文件是Apache Avro模式对象。
将其用作DF标头的最佳方法是什么?
我正在Azure Databricks上运行pyspark。
答案 0 :(得分:0)
您还有avro文件吗? databricks网站具有读取avsc文件(https://docs.databricks.com/spark/latest/data-sources/read-avro.html)的示例。因此,您可以先将avsc文件读入数据框:
import org.apache.avro.Schema
val schema = new Schema.Parser().parse(new File("user.avsc"))
val df = spark
.read
.format("avro")
.option("avroSchema", schema.toString)
.load("/tmp/episodes.avro")
如果没有可使用的avro文件,则可以尝试将该代码指向一个空文件夹。
然后在csv文件上使用架构:
val df = spark.read.format("csv").schema(df.schema).load(csvFilePath)