在 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 上创建表模式的主要内容,如果未能解决你的问题,请参考以下文章
如果 Databricks 或 Spark SQL 中存在表,则插入
如何使用 Spark sql 在 Databricks 中使用内部联接更新 Databricks Delta 表
如何在 DataBricks 中使用 GUID/自动生成键创建表