0

我需要将各种文件(不同类型)加载到 spark 数据框中。Databricks 是否支持所有这些文件格式?如果是,我在哪里可以获得每种文件格式支持的选项列表?

delimited
csv
parquet
avro
excel
json

谢谢

4

2 回答 2

0

我不确切知道 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 中)来定义选项。每种格式都是独立完成的……不幸的是,最好的办法是阅读文档或(更权威的)源代码。

于 2017-06-01T08:55:59.547 回答
-1

Spark 支持所有这些格式,对于 Excel 文件,您可以使用spark-excel库。

于 2017-06-01T07:34:34.503 回答