我正在研究数据块中的 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)
直到这里,我才能得到相关矩阵。结果如下:
现在我的问题是:
因为我刚刚研究了pyspark和databricks。ggplot 或 matplotlib 都可以解决我的问题。
我正在尝试使用 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) 我是 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 …
我在 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)
现在,如果我单独使用此命令,它将覆盖目标分区中的任何现有数据
所以 …
目前,在 Databricks 中,如果我们运行查询,它在第一次运行时总是返回 1000 行。如果我们需要所有行,我们需要再次执行查询。
在我们知道需要下载完整数据(1000+ 行)的情况下,是否有办法执行查询以在第一次运行时获取所有行而无需重新执行查询?
Databricks 最近的这篇博客文章https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html表示,pandas 程序所需的唯一更改是在 pyspark.pandas 下运行它是更改from pandas import read_csv为from pyspark.pandas import read_csv.
但这似乎不对。那么所有其他(非read_csv)对 pandas 的引用呢?import pandas as pd改变不是正确的方法吗import pyspark.pandas as pd?然后现有程序中的所有其他 pandas 引用都将指向 pandas 的 pyspark 版本。
我对 Lake House 架构模式了解得越多,并关注 Databricks 的演示,我就几乎看不到任何关于传统数据仓库(Kimball 方法)中的维度建模的讨论。我知道计算和存储要便宜得多,但是如果没有数据建模,查询性能是否会有更大的影响?从 Spark 3.0 开始,我看到了所有很酷的功能,例如自适应查询引擎、动态分区修剪等,但是维度建模是否因此而过时了?如果有人使用 Databricks 实现维度建模,请分享您的想法?
bigdata apache-spark databricks azure-databricks databricks-sql
我正在使用带有 Scala 2.12 的 Databricks 集群版本 7.3 LTS。这个版本确实使用了Log4J。
官方文档说它使用Log4J版本1.2.17。这是否意味着我没有这个漏洞?如果这样做,我可以在集群上手动修补它,还是需要将集群升级到下一个 LTS 版本?
我正在学习Databricks,我有一些关于z-order 和partitionBy 的问题。当我阅读这两个函数时,听起来非常相似。这两个函数都以某种方式对数据进行分组,以加速读取操作。另外,partitionBy 看起来很适合连接操作,但我真的不明白当我只想读取数据时应该使用什么函数。你能告诉我应该如何考虑这两个函数才能正确使用它吗?
我一直在考虑在我们的主要(唯一)工作区中打开 Databricks Unity Catalog,但我担心这可能会如何影响我们现有的 dbt 负载以及新的三部分对象引用。
我从 dbt-databricks发行说明中看到,您需要 >= 1.1.1 才能获得 Unity 支持。
带有它的代码片段仅显示在配置文件中设置目录属性。我计划将 dbt 生成的对象的一些源放在单独的目录中。
如果可用的话,我什至可能选择将 dbt 生成的对象放在单独的目录中。
由于打开 Unity Catalog 是工作区中的一条单行道,因此我不想即兴发挥并看看会发生什么。
有人将 dbt 与 Unity Catalog 一起使用并在项目中使用了大量目录吗?
如果是这样,是否有任何问题以及如何指定来源和特定型号的目录?
问候,
阿什利
databricks ×10
apache-spark ×4
azure ×3
pyspark ×2
bigdata ×1
correlation ×1
dbt ×1
delta-lake ×1
ggplot2 ×1
heatmap ×1
hive ×1
log4j ×1
pandas ×1
partitioning ×1
python ×1
sql ×1
z-order ×1