在 Azure Databricks 环境中,我发现了软件包SparkR和sparklyr.
从我的笔记本中SparkR,我设法连接到数据库:
library(SparkR)
DW <- sql("select * from mydb.sometable")
Run Code Online (Sandbox Code Playgroud)
它运行良好,但 SparkR 语法似乎与经典 R 语法相差太远(根据我的说法)。
所以我想尝试一下sparklyr,但我无法访问同一个数据库:
library(sparklyr)
sc <- spark_connect(method="databricks")
test <- spark_read_table(sc, "mydb.sometable")
Error : org.apache.spark.sql.AnalysisException: It is not allowed to add database prefix ...
Run Code Online (Sandbox Code Playgroud)
有什么问题吗?
谢谢 !!
我正在对 Databricks 中托管的巨大 Delta 表的数据框进行非常简单的操作。我面临的问题是,运行几个小时后,代码失败,并显示错误“作业因阶段失败而中止:59014 个任务的序列化结果的总大小 (4.0 GiB) 大于spark.driver.maxResultSize 4.0 GiB” ”。
我正在执行的任务是,我读取数据框中的增量表,添加一个新列用于创建存储桶(20个存储桶),并以覆盖模式保存表,将存储桶添加为另一个分区(已经有3个分区,这个新分区)列将是第四个分区)。因此,我没有在应用程序代码中执行任何会导致大量数据返回驱动程序的操作。下面给出的是示例代码
bucket_number = 20
inputDataframe = spark.read.table("huge_delta_table")
inputDataframe = inputDataframe.withColumn("bucket_key", (translate( substring(col("some_column"), 0, 16), "abcdefghijklmnopqrstuvwxyz", "01234567890123456789012345").cast(LongType()) %buckets_number)+1)
inputDatafrme.write.format("delta")
input.write.format("delta").mode("overwrite").option("overwriteSchema", "true").partitionBy("existing_partition_column1","existing_partition_column2","existing_partition_column3","bucket_key") \
.saveAsTable("huge_delta_table")
Run Code Online (Sandbox Code Playgroud)
我想知道,是否是因为大量的任务导致 Spark 的内部结果元数据变得巨大(当出于协调目的而传回驱动程序时)?
我正在 databricks 社区版上使用 Sparkdl 进行图像分类。我添加了所有图书馆的。我已经使用图像数据创建了数据框。
from pyspark.ml.classification import LogisticRegression
from pyspark.ml import Pipeline
from sparkdl import DeepImageFeaturizer
featurizer = DeepImageFeaturizer(inputCol="image", outputCol="features", modelName="InceptionV3")
lr = LogisticRegression(maxIter=20, regParam=0.05, elasticNetParam=0.3, labelCol="label")
p = Pipeline(stages=[featurizer, lr])
p_model = p.fit(train_df)
AttributeError Traceback (most recent call last)
<command-2468766328144961> in <module>()
7 p = Pipeline(stages=[featurizer, lr])
8
----> 9 p_model = p.fit(train_df)
/databricks/spark/python/pyspark/ml/base.py in fit(self, dataset, params)
62 return self.copy(params)._fit(dataset)
63 else:
---> 64 return self._fit(dataset)
65 else:
66 raise ValueError("Params must be either a param map …Run Code Online (Sandbox Code Playgroud) 我将 data.csv 上传到 Microsoft Azure 存储资源管理器。然后复制url并在databricks中创建一个表。
%sql
DROP TABLE If EXISTS data;
CREATE TABLE IF NOT EXISTS data
USING CSV
OPTIONS (header "true", inferSchema "true")
LOCATION "url/data.csv"
Run Code Online (Sandbox Code Playgroud)
现在我想使用sparklyr来操作“数据”。
我应该如何将上述数据转换为 Sparklyr 数据框以充分利用 Sparklyr 的潜力?
我有 2 个数据框,需要根据列(员工代码)合并它们。请注意,数据框大约有 75 列,因此我提供了一个示例数据集来获取一些建议/示例解决方案。我正在使用 databricks,数据集是从 S3 读取的。
以下是我的 2 个数据框:
DATAFRAME - 1
|-----------------------------------------------------------------------------------|
|EMP_CODE |COLUMN1|COLUMN2|COLUMN3|COLUMN4|COLUMN5|COLUMN6|COLUMN7|COLUMN8|COLUMN9|
|-----------------------------------------------------------------------------------|
|A10001 | B | | | | | | | | |
|-----------------------------------------------------------------------------------|
DATAFRAME - 2
|-----------------------------------------------------------------------------------|
|EMP_CODE |COLUMN1|COLUMN2|COLUMN3|COLUMN4|COLUMN5|COLUMN6|COLUMN7|COLUMN8|COLUMN9|
|-----------------------------------------------------------------------------------|
|A10001 | | | | | C | | | | |
|B10001 | | | | | | | | |T2 |
|A10001 | | | | | | | | B | |
|A10001 | | | C | | …Run Code Online (Sandbox Code Playgroud) 我必须在 Databricks 中安装 pyodbc 模块。我曾尝试使用此命令 ( pip install pyodbc) 但由于以下错误而失败。
databricks 和 Spark 新手,我尝试运行以下命令并遇到此错误
spark.databricks.delta.retentionDurationCheck.enabled= "false"
Run Code Online (Sandbox Code Playgroud)
错误:'SparkSession' object has no attribute 'databricks'
我正在尝试使用 databricks cli 并调用 databricks configure 这就是我从 cmd 中执行的操作
somepath>databricks configure --token
Databricks Host (should begin with https://): my_https_address
Token: my_token
Run Code Online (Sandbox Code Playgroud)
我想使用 R 调用相同的命令。所以我做了:
tool.control <- c('databricks configure --token'
,'my_https_address'
,'my_token')
shell(tool.control)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Error in system(command, as.integer(flag), f, stdout, stderr, timeout) :
character string expected as first argument
Run Code Online (Sandbox Code Playgroud)
我该如何纠正?
编辑:尝试评论中的建议后,我收到此错误:
Databricks Host (should begin with https://): Aborted!
'https:' is not recognized as an internal or external command,
operable program or batch file.
'my_token' is not recognized as an internal or …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 databricks 连接到 azure data Lake gen2 中的 blob 容器。
我无法在任何地方找到我的文件系统名称或我的存储帐户名称以进行连接。
dbutils.fs.ls("abfss://文件系统名称@存储帐户名称.dfs.core.windows.net/")
谢谢。如果有人可以参考一个例子那就太好了。
databricks ×10
apache-spark ×4
pyspark ×3
r ×3
sparklyr ×2
command-line ×1
delta-lake ×1
pyodbc ×1
python ×1
python-3.x ×1
sparkr ×1
tidyverse ×1