标签: databricks

使用pyspark+databricks时如何绘制相关热图

我正在研究数据块中的 pyspark。我想生成一个相关热图。假设这是我的数据:

myGraph=spark.createDataFrame([(1.3,2.1,3.0),
                               (2.5,4.6,3.1),
                               (6.5,7.2,10.0)],
                              ['col1','col2','col3'])
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import pyspark
from pyspark.sql import SparkSession
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from ggplot import *
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.stat import Correlation
from pyspark.mllib.stat import Statistics

myGraph=spark.createDataFrame([(1.3,2.1,3.0),
                               (2.5,4.6,3.1),
                               (6.5,7.2,10.0)],
                              ['col1','col2','col3'])
vector_col = "corr_features"
assembler = VectorAssembler(inputCols=['col1','col2','col3'], 
                            outputCol=vector_col)
myGraph_vector = assembler.transform(myGraph).select(vector_col)
matrix = Correlation.corr(myGraph_vector, vector_col)
matrix.collect()[0]["pearson({})".format(vector_col)].values
Run Code Online (Sandbox Code Playgroud)

直到这里,我才能得到相关矩阵。结果如下:

在此处输入图片说明

现在我的问题是:

  1. 如何将矩阵传输到数据帧?我已经尝试了如何在 pyspark 中将 DenseMatrix 转换为 spark DataFrame 的方法?以及如何获得相关矩阵值 pyspark。但它对我不起作用。
  2. 如何生成如下所示的相关热图:

在此处输入图片说明

因为我刚刚研究了pyspark和databricks。ggplot 或 matplotlib 都可以解决我的问题。

heatmap ggplot2 correlation pyspark databricks

7
推荐指数
1
解决办法
8606
查看次数

如何在 spark 2.4.1 中将 jdbc/partitionColumn 类型设置为 Date

我正在尝试使用 spark-sql-2.4.1 版本从 oracle 检索数据。我尝试将 JdbcOptions 设置为如下:

    .option("lowerBound", "31-MAR-02");
    .option("upperBound", "01-MAY-19");
    .option("partitionColumn", "data_date");
    .option("numPartitions", 240);
Run Code Online (Sandbox Code Playgroud)

但给出错误:

    java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
        at java.sql.Timestamp.valueOf(Timestamp.java:204)
        at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.toInternalBoundValue(JDBCRelation.scala:179)
Run Code Online (Sandbox Code Playgroud)

然后尝试如下

    .option("lowerBound", "2002-03-31"); //changed the date format
    .option("upperBound", "2019-05-02");
    .option("partitionColumn", "data_date"); 
    .option("numPartitions", 240);
Run Code Online (Sandbox Code Playgroud)

仍然没有运气。那么将日期作为“下限/上限”传递的正确方法是什么?有没有办法指定/设置选项参数数据类型?

Part-2 正确检查选项。它们在执行查询之前被覆盖。所以更正了。...现在该错误已解决。

但对于以下选项:

.option("lowerBound", "2002-03-31 00:00:00"); 
.option("upperBound", "2019-05-01 23:59:59");
.option("timestampFormat", "yyyy-mm-dd hh:mm:ss");
Run Code Online (Sandbox Code Playgroud)

请求参数 :

query ->  ( SELECT * FROM MODEL_VALS ) T
Run Code Online (Sandbox Code Playgroud)

它引发了另一个错误:

java.sql.SQLException: ORA-12801: error signaled in parallel query server P022, instance nj0005

ORA-01861: literal does not …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql databricks

7
推荐指数
1
解决办法
6088
查看次数

在 Azure 数据块中创建外部表

我是 azure databricks 的新手,并尝试创建一个指向 Azure Data Lake Storage (ADLS) Gen-2 位置的外部表。

从 databricks 笔记本中,我尝试为 ADLS 访问设置 spark 配置。我仍然无法执行创建的 DDL。

注意:对我有用的一种解决方案是将 ADLS 帐户安装到集群,然后使用外部表的 DDL 中的安装位置。但是我需要检查是否可以使用没有安装位置的 ADLS 路径创建外部表 DDL。

# Using Principal credentials
spark.conf.set("dfs.azure.account.auth.type", "OAuth")
spark.conf.set("dfs.azure.account.oauth.provider.type", "ClientCredential")
spark.conf.set("dfs.azure.account.oauth2.client.id", "client_id")
spark.conf.set("dfs.azure.account.oauth2.client.secret", "client_secret")
spark.conf.set("dfs.azure.account.oauth2.client.endpoint", 
"https://login.microsoftonline.com/tenant_id/oauth2/token")
Run Code Online (Sandbox Code Playgroud)

数据线

create external table test(
id string,
name string
)
partitioned by (pt_batch_id bigint, pt_file_id integer)
STORED as parquet
location 'abfss://container@account_name.dfs.core.windows.net/dev/data/employee
Run Code Online (Sandbox Code Playgroud)

收到错误

Error in SQL statement: AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.contracts.exceptions.ConfigurationPropertyNotFoundException Configuration property account_name.dfs.core.windows.net not found.);
Run Code Online (Sandbox Code Playgroud)

我需要帮助知道这是否可以直接在 DDL …

hive azure external-tables databricks azure-databricks

7
推荐指数
1
解决办法
5148
查看次数

使用 Databricks 中的 PySpark 在 Azure DataLake 中使用 partitionBy 和覆盖策略

我在 Azure 环境中有一个简单的 ETL 过程

blob 存储 > 数据工厂 > 原始数据 > 数据块 > 数据湖策划 > 数据仓库(主 ETL)。

这个项目的数据集不是很大(大约 100 万行 20 列给予或接受)但是我想将它们作为 Parquet 文件在我的数据湖中正确分区。

目前我运行一些简单的逻辑来确定每个文件应该在我的湖中的哪个位置基于业务日历。

文件模糊地看起来像这样

Year Week Data
2019 01   XXX
2019 02   XXX
Run Code Online (Sandbox Code Playgroud)

然后我将给定的文件分区为以下格式,替换存在的数据并为新数据创建新文件夹。

curated ---
           dataset --
                     Year 2019 
                              - Week 01 - file.pq + metadata
                              - Week 02 - file.pq + metadata
                              - Week 03 - file.pq + datadata #(pre existing file)
Run Code Online (Sandbox Code Playgroud)

元数据是成功和自动生成的提交

为此,我在 Pyspark 2.4.3 中使用以下查询

pyspark_dataframe.write.mode('overwrite')\
                         .partitionBy('Year','Week').parquet('\curated\dataset')
Run Code Online (Sandbox Code Playgroud)

现在,如果我单独使用此命令,它将覆盖目标分区中的任何现有数据

所以 …

python azure apache-spark apache-spark-sql databricks

7
推荐指数
1
解决办法
6462
查看次数

Databricks SQL - 如何在第一次运行中获取所有行(超过 1000)?

目前,在 Databricks 中,如果我们运行查询,它在第一次运行时总是返回 1000 行。如果我们需要所有行,我们需要再次执行查询。

在我们知道需要下载完整数据(1000+ 行)的情况下,是否有办法执行查询以在第一次运行时获取所有行而无需重新执行查询?

sql apache-spark-sql databricks

7
推荐指数
1
解决办法
3387
查看次数

使用新 pyspark.pandas 的正确方法是什么?

Databricks 最近的这篇博客文章https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html表示,pandas 程序所需的唯一更改是在 pyspark.pandas 下运行它是更改from pandas import read_csvfrom pyspark.pandas import read_csv.

但这似乎不对。那么所有其他(非read_csv)对 pandas 的引用呢?import pandas as pd改变不是正确的方法吗import pyspark.pandas as pd?然后现有程序中的所有其他 pandas 引用都将指向 pandas 的 pyspark 版本。

pandas pyspark databricks

7
推荐指数
1
解决办法
5944
查看次数

星型模式(数据建模)仍然与使用 Databricks 的 Lake House 模式相关吗?

我对 Lake House 架构模式了解得越多,并关注 Databricks 的演示,我就几乎看不到任何关于传统数据仓库(Kimball 方法)中的维度建模的讨论。我知道计算和存储要便宜得多,但是如果没有数据建模,查询性能是否会有更大的影响?从 Spark 3.0 开始,我看到了所有很酷的功能,例如自适应查询引擎、动态分区修剪等,但是维度建模是否因此而过时了?如果有人使用 Databricks 实现维度建模,请分享您的想法?

bigdata apache-spark databricks azure-databricks databricks-sql

7
推荐指数
1
解决办法
2871
查看次数

如何检查Databricks集群是否存在Log4J漏洞?

我正在使用带有 Scala 2.12 的 Databricks 集群版本 7.3 LTS。这个版本确实使用了Log4J。

官方文档说它使用Log4J版本1.2.17。这是否意味着我没有这个漏洞?如果这样做,我可以在集群上手动修补它,还是需要将集群升级到下一个 LTS 版本?

log4j azure databricks

7
推荐指数
1
解决办法
2183
查看次数

Databricks:Z 顺序与分区

我正在学习Databricks,我有一些关于z-order 和partitionBy 的问题。当我阅读这两个函数时,听起来非常相似。这两个函数都以某种方式对数据进行分组,以加速读取操作。另外,partitionBy 看起来很适合连接操作,但我真的不明白当我只想读取数据时应该使用什么函数。你能告诉我应该如何考虑这两个函数才能正确使用它吗?

partitioning z-order apache-spark databricks delta-lake

7
推荐指数
1
解决办法
9381
查看次数

Databricks Unity 目录上的 DBT

我一直在考虑在我们的主要(唯一)工作区中打开 Databricks Unity Catalog,但我担心这可能会如何影响我们现有的 dbt 负载以及新的三部分对象引用。

我从 dbt-databricks发行说明中看到,您需要 >= 1.1.1 才能获得 Unity 支持。
带有它的代码片段仅显示在配置文件中设置目录属性。我计划将 dbt 生成的对象的一些源放在单独的目录中。

如果可用的话,我什至可能选择将 dbt 生成的对象放在单独的目录中。
由于打开 Unity Catalog 是工作区中的一条单行道,因此我不想即兴发挥并看看会发生什么。

有人将 dbt 与 Unity Catalog 一起使用并在项目中使用了大量目录吗?

如果是这样,是否有任何问题以及如何指定来源和特定型号的目录?

问候,

阿什利

databricks dbt databricks-unity-catalog

7
推荐指数
1
解决办法
1868
查看次数