【问题标题】:How to know the file formats supported by Databricks?如何知道 Databricks 支持的文件格式?
【发布时间】:2017-06-01 06:54:23
【问题描述】:

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

delimited
csv
parquet
avro
excel
json

谢谢

【问题讨论】:

    标签: apache-spark apache-spark-sql databricks


    【解决方案1】:

    我不确切知道 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 中)来定义选项。每种格式都会自行执行此操作...不幸的是,您最好的选择是阅读文档或(更权威的)源代码。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • avro 也是?不这么认为。
      • 我从 DataBricks 看到了spark-avro,但没有使用它
      • Databricks 工具中是否提供此功能?
      猜你喜欢
      • 2021-11-16
      • 2021-06-14
      • 1970-01-01
      • 2021-11-18
      • 2010-11-22
      • 2013-11-25
      • 2014-01-31
      • 2023-02-20
      相关资源
      最近更新 更多