apache-spark - Databricks 和 Power BI 中的增量表
问题描述
我通过安装在 Databricks 中并创建一个表(“使用 delta”)连接到 Azure gen 2 数据湖中的一个 delta 表。然后,我使用 Databricks 连接器在 Power BI 中连接到此。
首先,我不清楚 Databricks 中数据湖和 Spark 表之间的关系。Spark表每次自己查询时都从数据湖(delta湖)中检索最新的快照是否正确?是否也无法通过对 Spark 表的操作来影响数据湖中的更改?
其次,减少 Spark 表中列的最佳方法是什么(最好是在将其读入 Power BI 之前)?我尝试使用指定的列子集创建 Spark 表,但出现无法更改架构错误。相反,我可以创建另一个从第一个 Spark 表中选择的 Spark 表,但这似乎效率很低,并且(我认为)需要根据 Power BI 报告的刷新计划频繁地重新创建。我不知道是否有可能有一个 Spark delta 表引用另一个 Spark Delta 表,以便前者在查询时也始终是最新的快照?
如您所知,我对此的理解是有限的(文档也是如此!),但任何指针都非常感谢。
在此先感谢您的阅读!
解决方案
Spark 中的表只是指定数据所在位置的元数据。因此,当您读取表时,Spark 只是在 Metastore 中查找数据存储位置、架构等信息,然后访问该数据。对 ADLS 所做的更改也将反映在表格中。也可以通过工具修改表,但这取决于处理数据的 Spark 集群可用的访问权限 - 您可以在 ADLS 级别或使用表访问控制设置权限。
对于第二部分-您只需要在原始表上创建一个视图,该视图将仅选择有限的列集-不会复制数据,并且原始表中的最新更新将始终可用于查询。就像是:
CREATE OR REPLACE VIEW myview
AS SELECT col1, col2 FROM mytable
PS 如果您仅通过 PowerBI 或其他 BI 工具进行访问,您可以查看针对 BI 用例进行了高度优化的 Databricks SQL(当它在公共预览版中时)。
推荐阅读
- xml - cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素“oai-identifier”的声明。如何解决这个问题?
- html - CSS BEM - SVG 类
- ios - Fastlane - 更新 5 个现有屏幕截图中的 2 个屏幕截图
- ios - Xcode pods.framework 文件指向错误的派生数据目录
- python - 我是否为 Keras 中的 LSTM 优化了输入数据的格式?
- c++ - 如何命名 C++ 捕获变量?
- php - 如何从网页最高工资和最低工资中获取输出值
- html - 是否可以强制网站输入为英文?
- encryption - MariaDB / 文件密钥管理加密:密钥文件中的语法错误
- google-sheets - 如何使公式唯一以忽略列