标签: databricks

Databricks - 将 dbfs:/FileStore 文件下载到我的本地计算机

通常我使用下面的 URL 将文件从 Databricks DBFS FileStore 下载到我的本地计算机。

*https://<MY_DATABRICKS_INSTANCE_NAME>/fileStore/?o=<NUMBER_FROM_ORIGINAL_URL>*
Run Code Online (Sandbox Code Playgroud)

然而,这次文件没有下载,URL 而是将我引导至 Databricks 主页。有人对如何将文件从 DBFS 下载到本地有任何建议吗?或者应该如何修复 URL 以使其正常工作?

任何建议将不胜感激!

八打灵再也

databricks azure-databricks

12
推荐指数
1
解决办法
3万
查看次数

Delta Lake 回滚

需要一种优雅的方式将 Delta Lake 回滚到以前的版本。

我目前的方法如下:

import io.delta.tables._

val deltaTable = DeltaTable.forPath(spark, testFolder)

spark.read.format("delta")
  .option("versionAsOf", 0)
  .load(testFolder)
  .write
  .mode("overwrite")
  .format("delta")
  .save(testFolder)
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,因为需要重写整个数据集。似乎一些元更新就足够了,不需要数据 I/O。有人知道更好的方法吗?

rollback apache-spark databricks delta-lake

11
推荐指数
2
解决办法
4218
查看次数

PySpark:从另一个笔记本导入变量时如何抑制 PySpark 单元中的 %run 输出?

我在 PySpark 中使用多个笔记本,并使用%run path. 每次运行该命令时,我在原始笔记本中显示的所有变量都会在当前笔记本(我运行的笔记本)中再次显示。但我不希望它们显示在当前笔记本中。我只想能够使用导入的变量。如何抑制每次显示的输出?请注意,我不确定这是否重要,但我在 DataBricks 工作。谢谢你!

命令示例:

%run /Users/myemail/Nodebook
Run Code Online (Sandbox Code Playgroud)

python import pyspark jupyter-notebook databricks

11
推荐指数
1
解决办法
6818
查看次数

我什么时候应该使用 Azure ML Notebooks 和 Azure Databricks?我认为两者都是竞争对手的产品

非常不言自明的问题。我什么时候应该使用 Azure ML Notebooks 和 Azure Databricks?我觉得\xe2\x80\x99s这两种产品之间有很大的重叠,其中一种产品的营销肯定比另一种更好。

\n\n

I\xe2\x80\x99m 主要寻找有关数据集大小和典型工作流程的信息。如果我没有面向 Spark 的工作流程,为什么应该使用 Databricks 而不是 AzureML?

\n\n

谢谢 !

\n

machine-learning azure databricks azure-machine-learning-service

11
推荐指数
1
解决办法
7267
查看次数

Databricks Delta Lake 的 MERGE INTO 的 pyspark 等效项是什么?

databricks文档描述了如何对增量表进行合并。

SQL 中的语法

MERGE INTO [db_name.]target_table [AS target_alias]
USING [db_name.]source_table [<time_travel_version>] [AS source_alias]
ON <merge_condition>
[ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ]
[ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ]
[ WHEN NOT MATCHED [ AND <condition> ]  THEN <not_matched_action> ]
Run Code Online (Sandbox Code Playgroud)

可以使用。有 python 等效项可用吗?

merge databricks delta-lake

11
推荐指数
1
解决办法
2万
查看次数

检查数据块中的路径上是否存在增量表

在加载之前,我需要从 delta-lake 表中删除某些数据。我可以从增量表中删除数据(如果存在),但当表不存在时会失败。

下面的 Databricks scala 代码

// create delete statement
val del_ID = "Check_ID =" + "123"

// get delta table from path where data exists
val deltaTable = DeltaTable.forPath(spark, path)

// delete data from delta table
deltaTable.delete(del_ID)
Run Code Online (Sandbox Code Playgroud)

仅当该路径上存在增量数据时,上述代码才有效,否则将失败。

有人可以分享一种方法,如果增量数据存在,则执行删除语句,否则删除语句将被忽略?

scala databricks delta-lake

11
推荐指数
2
解决办法
3万
查看次数

无法使私有 java.nio.DirectByteBuffer(long,int) 可访问

我正在使用 Python 通过databricks-connect. 在墙后面,这使用了 Spark,它确实是基于 java 的,所以为了使用它,我需要 java。JDK已下载(版本14),设置为JAVA_HOME env,但是当我运行代码时,出现以下错误:

引起原因:java.lang.reflect.InaccessibleObjectException:无法使私有java.nio.DirectByteBuffer(long,int)可访问:模块java.base不会“打开java.nio”到未命名模块@bccb269

这是崩溃的代码

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索但找不到这个错误,我认为这不是我第一次遇到。任何想法这个错误意味着什么以及如何修复它?

java databricks databricks-connect

11
推荐指数
1
解决办法
1万
查看次数

S3 Lake Formation 控制表和 Databricks Delta 表之间的主要区别是什么?

S3 Lake Formation 控制表和 Databricks Delta 表之间的主要区别是什么?他们看起来很相似。

amazon-s3 databricks delta-lake aws-lake-formation

11
推荐指数
1
解决办法
3779
查看次数

Spark:读取inputStream而不是File

我在Java应用程序中使用SparkSQL使用Databricks对CSV文件进行一些处理以进行解析.

我正在处理的数据来自不同的来源(远程URL,本地文件,谷歌云存储),我习惯将所有内容都变成一个InputStream,以便我可以解析和处理数据,而无需知道它来自何处.

我在Spark上看到的所有文档都从路径中读取文件,例如

SparkConf conf = new SparkConf().setAppName("spark-sandbox").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlc = new SQLContext(sc);

DataFrame df = sqlc.read()
    .format("com.databricks.spark.csv")
    .option("inferSchema", "true")
    .option("header", "true")
    .load("path/to/file.csv");

DataFrame dfGrouped = df.groupBy("varA","varB")
    .avg("varC","varD");

dfGrouped.show();
Run Code Online (Sandbox Code Playgroud)

我想要做的是从InputStream中读取,或者甚至只读取已经在内存中的字符串.类似于以下内容:

InputStream stream = new URL(
    "http://www.sample-videos.com/csv/Sample-Spreadsheet-100-rows.csv"
    ).openStream();

DataFrame dfRemote = sqlc.read()
    .format("com.databricks.spark.csv")
    .option("inferSchema", "true")
    .option("header", "true")
    .load(stream);

String someString = "imagine,some,csv,data,here";

DataFrame dfFromString = sqlc.read()
    .format("com.databricks.spark.csv")
    .option("inferSchema", "true")
    .option("header", "true")
    .read(someString);
Run Code Online (Sandbox Code Playgroud)

这里有什么简单的东西吗?

我已经阅读了一些关于Spark Streaming和自定义接收器的文档,但据我所知,这是为了打开一个连续提供数据的连接.Spark Streaming似乎将数据分解为块并对其进行一些处理,期望更多的数据进入无休止的流中.

我最好的猜测是,Spark作为Hadoop的后代,期望大量的数据可能存在于某个文件系统中.但是由于Spark无论如何都要在内存中进行处理,因此我认为SparkSQL能够解析内存中的数据.

任何帮助,将不胜感激.

java apache-spark apache-spark-sql spark-dataframe databricks

10
推荐指数
1
解决办法
5672
查看次数

PySpark - 用于创建新列的字符串匹配

我有一个数据帧,如:

ID             Notes
2345          Checked by John
2398          Verified by Stacy
3983          Double Checked on 2/23/17 by Marsha 
Run Code Online (Sandbox Code Playgroud)

比方说,例如,只有3名员工需要检查:John,Stacy或Marsha.我想像这样制作一个新专栏:

ID                Notes                              Employee
2345          Checked by John                          John
2398         Verified by Stacy                        Stacy
3983     Double Checked on 2/23/17 by Marsha          Marsha
Run Code Online (Sandbox Code Playgroud)

这里是正则表达式还是grep更好?我应该尝试什么样的功能?谢谢!

编辑:我一直在尝试一堆解决方案,但似乎没有任何工作.我应该放弃并为每个员工创建具有二进制值的列吗?IE:

ID                Notes                             John       Stacy    Marsha
2345          Checked by John                        1            0       0
2398         Verified by Stacy                       0            1       0
3983     Double Checked on 2/23/17 by Marsha         0            0       1
Run Code Online (Sandbox Code Playgroud)

python regex apache-spark pyspark databricks

10
推荐指数
1
解决办法
2万
查看次数