在 Spark DataBricks 上创建表模式

Posted

技术标签:

【中文标题】在 Spark DataBricks 上创建表模式【英文标题】:Creating Table Schema on Spark DataBricks 【发布时间】:2019-11-29 06:17:52 【问题描述】:

我想在云上的 Spark DataBricks 平台上创建表结构,就像在其他 sql 引擎中一样。我有几个与此相关的问题,

    如何创建具有默认值的列?示例 - 插入记录时应存储当前日期 基于年月列的分区表

帮助赞赏!!

【问题讨论】:

【参考方案1】:

要为您的数据框创建 createdDate 列,

df.withColumn("createdDate",lit(current_date()).show(5)

+---+-----------+
|id |createdDate|
+---+-----------+
|0  |2019-11-29 |
|1  |2019-11-29 |
|2  |2019-11-29 |
|3  |2019-11-29 |
|4  |2019-11-29 |
+---+-----------+

使用save函数分区存储数据帧,

#Default format will be parquet
df.write.partitionBy("year","month").save("<path>/df.parquet")

使用saveAsTable函数分区存储数据帧,

#Default format will be parquet
df.write.partitionBy("year","month").saveAsTable("<tablename>")

基于年月分区后的示例文件夹结构,

├── df.parquet
│   ├── _SUCCESS
│   └── year=2019
│       └── month=11
│           └── part-00000-ba8da035-aff2-44bc-9921-ed8a1d6e2cb3.c000.snappy.parquet 

【讨论】:

【参考方案2】:

像我们从标准 SQL 中知道的表的默认值在 spark/databricks 中不存在。 您必须像上面显示的 Aravind Palani 那样在 ETL 流程中执行此操作。

不管怎样,你可以在 spark-sql 中做一个普通的创建表,你可以在那里进行分区。

示例:

%sql
CREATE TABLE Persons
(
    Name string,
    Firstname string,
    Age int
)
PARTITIONED BY (Age, Firstname)

这就是你要找的吗?

【讨论】:

以上是关于在 Spark DataBricks 上创建表模式的主要内容,如果未能解决你的问题,请参考以下文章

spark sql如何在databricks中创建表

如果 Databricks 或 Spark SQL 中存在表,则插入

如何使用 Spark sql 在 Databricks 中使用内部联接更新 Databricks Delta 表

如何在 DataBricks 中使用 GUID/自动生成键创建表

Databricks(Spark):.egg依赖项没有自动安装?

Databricks/Spark SQL 中的反透视表