我需要将各种文件(不同类型)加载到 spark 数据框中。Databricks 是否支持所有这些文件格式?如果是,我在哪里可以获得每种文件格式支持的选项列表?
delimited
csv
parquet
avro
excel
json
谢谢
我需要将各种文件(不同类型)加载到 spark 数据框中。Databricks 是否支持所有这些文件格式?如果是,我在哪里可以获得每种文件格式支持的选项列表?
delimited
csv
parquet
avro
excel
json
谢谢
我不确切知道 Databricks 提供什么开箱即用(预安装),但您可以使用org.apache.spark.sql.execution.datasources.DataSource对象(引用 scaladoc)进行一些逆向工程:
Spark SQL 中负责表示可插拔数据源的主类
所有数据源通常使用DataSourceRegister接口注册自己(并用于shortName
提供它们的别名):
数据源应该实现这个特征,以便他们可以为他们的数据源注册一个别名。
阅读DataSourceRegister
你的 scaladoc 会发现:
这允许用户将数据源别名作为格式类型而不是完全限定的类名。
所以,YMMV。
除非您在 Databricks 上找到权威答案,否则您可能希望(遵循DataSource.lookupDataSource并)使用 Java 的ServiceLoader.load方法来查找所有已注册的DataSourceRegister
接口实现。
// start a Spark application with external module with a separate DataSource
$ ./bin/spark-shell --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.0-SNAPSHOT
import java.util.ServiceLoader
import org.apache.spark.sql.sources.DataSourceRegister
val formats = ServiceLoader.load(classOf[DataSourceRegister])
import scala.collection.JavaConverters._
scala> formats.asScala.map(_.shortName).foreach(println)
orc
hive
libsvm
csv
jdbc
json
parquet
text
console
socket
kafka
我在哪里可以获得每种文件格式支持的选项列表?
这是不可能的,因为没有可遵循的 API(如在 Spark MLlib 中)来定义选项。每种格式都是独立完成的……不幸的是,最好的办法是阅读文档或(更权威的)源代码。
Spark 支持所有这些格式,对于 Excel 文件,您可以使用spark-excel库。