Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 我怎样才能使用;spark.catalog.createTable“;函数创建分区表?_Apache Spark - Fatal编程技术网

Apache spark 我怎样才能使用;spark.catalog.createTable“;函数创建分区表?

Apache spark 我怎样才能使用;spark.catalog.createTable“;函数创建分区表?,apache-spark,Apache Spark,有一个option参数,但我没有找到任何使用它来传递分区列的示例我认为如果不提供架构,就不需要指定分区列。在这种情况下,spark会自动从位置推断模式和分区。然而,当前实现不可能同时提供模式和分区,但幸运的是,底层实现中的所有代码都是开放的,因此我完成了创建外部配置单元表的下一个方法 private def createExternalTable(tableName: String, location: String, schema: StructType, partition


有一个option参数,但我没有找到任何使用它来传递分区列的示例

我认为如果不提供架构,就不需要指定分区列。在这种情况下,spark会自动从位置推断模式和分区。然而,当前实现不可能同时提供模式和分区,但幸运的是,底层实现中的所有代码都是开放的,因此我完成了创建外部配置单元表的下一个方法

  private def createExternalTable(tableName: String, location: String, 
      schema: StructType, partitionCols: Seq[String], source: String): Unit = {
    val tableIdent = TableIdentifier(tableName)
    val storage = DataSource.buildStorageFormatFromOptions(Map("path" -> location))
    val tableDesc = CatalogTable(
      identifier = tableIdent,
      tableType = CatalogTableType.EXTERNAL,
      storage = storage,
      schema = schema,
      partitionColumnNames = partitionCols,
      provider = Some(source)
    )
    val plan = CreateTable(tableDesc, SaveMode.ErrorIfExists, None)
    spark.sessionState.executePlan(plan).toRdd  
  }

检查火花源。在Spark 2.4及更早版本中,仍然无法使用
org.apache.Spark.sql.catalog.catalog
。谢谢@DmitryY创建分区表。我还检查了,只找到了选项参数。。。同时,我切换到原始SQL,创建spark.sqlI以请求添加此功能。