databricks - Databricks 在路径上创建视图分区字段
问题描述
我认为这是一个菜鸟问题,但我根本找不到答案。假设我已经将我的数据组织成这样/mnt/raw/mydata/YYYY/MM/DD
:
例子:/mnt/raw/mydata/2020/10/20
其中 YYYY 是年,MM 是月,DD 日。我想创建一个可以将字段映射到文件夹名称的视图。我只看到了使用“YEAR=2020”创建视图的示例。那可能吗?
它与此处描述的分区发现有关 https://spark.apache.org/docs/latest/sql-data-sources-parquet.html但我的文件夹没有字段名称。我想知道我可以知道第一个级别是字段 YEAR,第二个是月份,第三个是天。
CREATE TEMPORARY VIEW parquetTable
USING org.apache.spark.sql.parquet
OPTIONS (
path "examples/src/main/resources/people.parquet"
)
解决方案
是的,您可以通过字段的不同值来分解文件夹。这可以通过对表/数据框进行分区来实现。建议您以 parquet 格式存储数据以优化空间,并且您的文件夹结构(即:选择的分区)包含大约 . 文件大小为 1GB。有关详细信息,请参阅以下链接:
https://spark.apache.org/docs/3.0.1/sql-data-sources-parquet.html#partition-discovery https://docs.databricks.com/delta/best-practices.html#choose-the -right-partition-column https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-ddl-create-table-datasource.html
CREATE OR REPLACE TABLE MyTable USING parquet OPTIONS (path "/mnt/raw/mydata") PARTITIONED BY (year, month, day)
推荐阅读
- python - SQL Server 在客户端数据库的选择中使用 db_owner 前缀
- php - 我在 smtp 服务器设置端口时出错
- angular-ui-router - 为什么延迟加载不适用于子模块?
- javascript - 在类组件外的函数中更新状态
- kubernetes-helm - 是否可以在 Helm 中使用多个帮助程序(模板)文件?
- swift - 当用户直接点击标签栏项目时,如何禁用滑动动画?
- php - PHP / MySQL 数据库同步
- powershell - 删除数组的最后一个字符
- docker - 复制失败:stat /var/lib/docker/tmp/docker-builderXXXXX/default.conf:没有这样的文件或目录
- python - 如何堆叠 sns.barplot 而不会在图例中重复?