标签: databricks

如何将 sql 表转换为 pyspark/python 数据结构并返回到 databricks notebook 中的 sql

我在数据块上运行一个 sql 笔记本。我想分析一个包含 50 亿条记录的表。我可以对数据运行简单的 sql 查询。但是,我需要将日期列类型从 str 更改为 date。

不幸的是,sparkSQL 似乎不支持更新/更改语句,因此我似乎无法修改表中的数据。

允许我在下一个单元格中将 SQL 表转换为 python 数据结构(在 pyspark 中)的一行代码是什么? 然后我可以修改文件并将其返回给 SQL。

python sql apache-spark databricks

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

在 Databricks+Spark 笔记本中使用 curl

我正在使用 Databricks 运行 Spark 集群。我想使用 curl 从服务器传输数据。例如,

curl -H "Content-Type: application/json" -H "auth:xxxx" -X GET "https://websites.net/Automation/Offline?startTimeInclusive=201609240100&endTimeExclusive=201609240200&dataFormat=json" -k > automation.json
Run Code Online (Sandbox Code Playgroud)

如何在 Databricks 笔记本中执行此操作(最好使用 python,但 Scala 也可以)?

curl apache-spark databricks

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

从 Hive 查询时未显示分区表中的数据

请注意,这个问题是不是一个重复这一个!我不使用 Spark SQL 进行分区!我正在保存单个镶木地板文件!

我也在使用不支持 Hive-flavored SQL 的Databricks

我在 Hive 中有一个表(我使用的是 Databricks),它包含两个分区。它看起来像这样:

CREATE TABLE foo_test (`col0` STRING, `col1` STRING, `col2` STRING, `datestamp` STRING)
USING parquet
OPTIONS (
  `serialization.format` '1'
)
PARTITIONED BY (datestamp)
Run Code Online (Sandbox Code Playgroud)

编辑: *这也是调用的结果show create table foo_test;

我手动添加了两个带有 Spark 的分区到这个表中:

df = spark.read.csv(file_path.format(datestamp), header=True, inferSchema=True)

partitionPath = "/mnt/foo_test/datestamp={}/".format(datestamp)

df.coalesce(1).write.parquet(partitionPath, mode="overwrite")


/mnt/foo_test/datestamp=20180101/
/mnt/foo_test/datestamp=20180102/
Run Code Online (Sandbox Code Playgroud)

如果我用 Spark 加载数据,我可以看到它在那里:

spark.read.option("mergeSchema", True).parquet("/mnt/foo_test").show()

+----+----+----+----+---------+
|col0|col1|col2|col3|datestamp|
+----+----+----+----+---------+
| foo| bar| baz|   1| 20180102|
| xul| qux| wom| …
Run Code Online (Sandbox Code Playgroud)

hive apache-spark apache-spark-sql databricks

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

pyspark中指定多列数据类型更改为不同数据类型

我有一个 DataFrame ( df),它由 50 多列和不同类型的数据类型组成,例如

df3.printSchema()


     CtpJobId: string (nullable = true)
 |-- TransformJobStateId: string (nullable = true)
 |-- LastError: string (nullable = true)
 |-- PriorityDate: string (nullable = true)
 |-- QueuedTime: string (nullable = true)
 |-- AccurateAsOf: string (nullable = true)
 |-- SentToDevice: string (nullable = true)
 |-- StartedAtDevice: string (nullable = true)
 |-- ProcessStart: string (nullable = true)
 |-- LastProgressAt: string (nullable = true)
 |-- ProcessEnd: string (nullable = true)
 |-- ClipFirstFrameNumber: string (nullable = true)
 |-- …
Run Code Online (Sandbox Code Playgroud)

python pandas apache-spark pyspark databricks

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

未在 Ubuntu 18.04 上安装 Databricks CLI

我已经在 Ubuntu 16.04 和 Mac 上成功安装了 databricks cli。当我尝试在 Ubuntu 18.04(Azure VM)上安装它时,它看起来运行得很好,然后当我尝试调用 cli 工具时它没有安装。我在 Ubuntu 16.04 和 OSX 上运行良好。关于让这个工作的任何想法?输出复制如下

vstsTestLogin@PensDataScienceVSTS:~$ pip install databricks-cli
Collecting databricks-cli
Using cached 

https://files.pythonhosted.org/packages/de/8f/b0b5222c910eafb4dd6cc6de04d7821e6caefb5a9d927bc68c39206e422f/databricks_cli-0.8.2-py2-none-any.whl
Collecting tabulate>=0.7.7 (from databricks-cli)
Collecting configparser>=0.3.5 (from databricks-cli)
Collecting click>=6.7 (from databricks-cli)
  Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Collecting six>=1.10.0 (from databricks-cli)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting requests>=2.17.3 (from databricks-cli)
  Using cached https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Collecting idna<2.8,>=2.5 (from requests>=2.17.3->databricks-cli)
  Using cached https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests>=2.17.3->databricks-cli)
  Using cached https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee63644d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.17.3->databricks-cli)
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3<1.24,>=1.21.1 (from …
Run Code Online (Sandbox Code Playgroud)

python ubuntu databricks azure-databricks databricks-cli

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

如何从 Azure Data Lake Store 读取 Azure Databricks 中的 JSON 文件

我正在使用 Azure Data Lake Store 存储带有以下 JSON 的简单 JSON 文件:

{
  "email": "Usersemail@domain.com",
  "id": "823956724385"
}
Run Code Online (Sandbox Code Playgroud)

json 文件名为myJson1.json. Azure Data Lake Store 已成功挂载到 Azure Databricks。

我能够通过以下方式成功加载 JSON 文件

df = spark.read.option("multiline", "true").json(fi.path)
Run Code Online (Sandbox Code Playgroud)

fi.path是一个FileInfo对象,它是MyJson1.json上面的文件。

当我做

spark.read.option("multiline", "true").json(fi.path)
df.show()` 
Run Code Online (Sandbox Code Playgroud)

我得到正确打印出的 JSON 对象(DataFrame)为

+---------------------+------------+
|                email|          id|
+---------------------+------------+
|Usersemail@domain.com|823956724385|
+---------------------+------------+
Run Code Online (Sandbox Code Playgroud)

我想要做的是,用 加载 JSON 文件json.load(filename),以便能够在 Python 中使用 JSON 对象。

当我做

with open('adl://.../myJson1.json', 'r') as file:
  jsonObject0 = json.load(file)
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误

[错误 2] 没有这样的文件或目录 'adl://.../myJson1.json'

当我尝试时(挂载点是正确的,我可以列出文件,也可以使用 spark.read …

python json azure databricks

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

java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime

我在一个使用库的项目上工作,这对我来说是很新的,尽管我在其他项目中使用它也没有任何问题。

org.joda.time.DateTime

因此,我与Scala一起工作,并在Databricks上作为项目来运行该项目。

scalaVersion:=“ 2.11.12”

异常来自的代码-根据我到目前为止的调查^^-如下:

    var lastEndTime = config.getState("some parameters")

    val timespanStart: Long = lastEndTime // last query ending time
    var timespanEnd: Long = (System.currentTimeMillis / 1000) - (60*840) // 14 hours ago

    val start = new DateTime(timespanStart * 1000)
    val end = new DateTime(timespanEnd * 1000)

    val date = DateTime.now()
Run Code Online (Sandbox Code Playgroud)

其中,getState()函数返回1483228800作为Long类型值。

编辑:我在建立数据框时使用开始和结束日期进行过滤。我将列(时间跨度类型)与这些值进行比较!

val df2= df
           .where(col("column_name").isNotNull)
           .where(col("column_name") > start &&
                  col("column_name") <= end)
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

错误从用户代码中抛出:java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime 2017-01-01T00:00:00.000Z

我不确定我是否真正理解这是怎么回事,为什么会出错,所以每种帮助都是值得欢迎的!!提前非常感谢您!!

datetime scala jodatime runtimeexception databricks

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

将 GitHub 存储库导入 Databricks 社区版

我正在尝试从 GitHub 中的公共存储库导入一些数据,以便从我的 Databricks 笔记本中使用它。

到目前为止,我尝试按照此处所述将我的 Databricks 帐户与我的 GitHub 连接,但没有结果,因为 GitHub 支持似乎附带了一些非社区许可。当我尝试设置 GitHub 集成所需的 GitHub 令牌时,我收到以下消息:

在此输入图像描述

之前在官方 Databricks 论坛上也有人问过同样的问题。

在 databricks 社区版上导入和存储 GitHub 存储库的最佳方法是什么?

github apache-spark databricks

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

如何使用数据块禁用 pyarrow

我正在尝试将 pyspark 数据帧转换为 databricks 中的 pandas 数据帧。我的databricks运行时版本是7.3 LTS(Scala 2.12,Spark 3.0.1)\n所以我编写了以下代码

\n
df_temp=spark_temp.toPandas()\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到错误消息

\n
UserWarning: toPandas attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true,\n
Run Code Online (Sandbox Code Playgroud)\n

所以我尝试按照以下方法禁用 pyarrow

\n
spark.conf.set(\xe2\x80\x9cspark.sql.execution.arrow.enabled\xe2\x80\x9d, \xe2\x80\x9cfalse\xe2\x80\x9d)\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到错误消息

\n
SyntaxError: invalid character in identifier\n
Run Code Online (Sandbox Code Playgroud)\n

它指向spark.sql\n你能帮我解决这个问题吗

\n

python-3.x pyspark databricks

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

如何使用 Python / Pyspark 合并 Databricks 笔记本中的数据帧

我正在使用 Databricks 笔记本提取 gz 压缩的 csv 文件并加载到数据框对象中。我在执行下面的第 2 部分时遇到了问题。

第 1 部分:将压缩文件加载到数据框中运行良好......

    %python
    df1 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_1.csv.gz")
    df2 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_2.csv.gz")
    
Run Code Online (Sandbox Code Playgroud)

第 2 部分:尝试合并数据框...

    %python
    import pandas as pd
    df =pd.concat([df1, df2], ignore_index=True)
    df.show(truncate=False)
    
Run Code Online (Sandbox Code Playgroud)

...返回以下错误:

类型错误:无法连接 '<class 'pyspark.sql.dataframe.DataFrame'>' 类型的对象;仅 Series 和 DataFrame 对象有效

对于尝试修改合并数据框的方式有什么建议吗?我最多将有 20 个文件要合并,其中所有列都相同。

python pandas pyspark databricks

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