小编bla*_*hop的帖子

插入时自动增加增量表中的 id

我在使用 pysparkSQL 与 delta 表合并 csv 文件时遇到问题。我设法创建 upsert 函数,如果匹配则更新,如果不匹配则插入。

我想将列添加ID到最终的增量表中,并在每次插入数据时递增它。此列标识增量表中的每一行。有什么办法可以把它落实到位吗?

def Merge(dict1, dict2):
    res = {**dict1, **dict2}
    return res

def create_default_values_dict(correspondance_df,marketplace):
    dict_output = {}
    for field in get_nan_keys_values(get_mapping_dict(correspondance_df, marketplace)):
        dict_output[field] = 'null'
        # We want to increment the id row each time we perform an insertion (TODO TODO TODO)
#         if field == 'id':
#             dict_output['id'] = col('id')+1
#         else:    
    return dict_output


def create_matched_update_dict(mapping, products_table, updates_table):
    output = {}
    for k,v in mapping.items():
        if k == 'source_name':
            output['products.source_name'] …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark delta-lake

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

如何在azure databricks中重命名数据库?

我正在尝试重命名 azure databricks 中的数据库,但收到以下错误:

输入“ALTER DATABASE inventory”时没有可行的替代方案

下面是代码:

%sql 
use inventory;
ALTER DATABASE inventory MODIFY NAME = new_inventory;
Run Code Online (Sandbox Code Playgroud)

请解释这个错误“在输入'ALTER DATABASE inventory时没有可行的替代方案”的含义以及如何解决它

apache-spark-sql databricks azure-databricks

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

Databricks 文件系统 - %sh ls 与 %fs ls

我有一些文件位于%sh ls,我想将这些文件移动到 databricks 的文件系统中(使它们在 中可见%fs ls)。

%sh ls你们中有人知道和之间有什么区别%fs ls,以及如何在它们之间移动文件吗?

我知道我们可以利用它dbutils.fs.cp来移动已经就位的文件%fs ls

任何帮助或指示表示赞赏。

filesystems databricks

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

如何使用 PySpark 在不更改数据类型的情况下修剪小数值后的零?

我的要求是从十进制值中删除尾随零,我尝试过正则表达式并strip()删除它有效的尾随零,但我们使用正则表达式和 strip 作为字符串数据类型,我想在Col_2不改变精度和小数位数的情况下为十进制。有人可以建议替代方案吗?

样本表:

Col_1:字符串

Col_2:十进制(18,2)

列_1 列_2
ABC 2.00
DEF 2.50
厦门 0.00
快速恢复时间 1.28

使用正则表达式的实际结果:

Col_1:字符串

Col_2:字符串

列_1 列_2
ABC 2
DEF 2.5
厦门
快速恢复时间 1.28

预期结果 :

列_1 列_2
ABC 2
DEF 2.5
厦门 0
快速恢复时间 1.28

trim decimal apache-spark apache-spark-sql pyspark

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

pyspark根据条件从数组结构列中获取元素

我有一个具有以下架构的 Spark df:

 |-- col1 : string
 |-- col2 : string
 |-- customer: struct
 |    |-- smt: string
 |    |-- attributes: array (nullable = true)
 |    |    |-- element: struct
 |    |    |     |-- key: string
 |    |    |     |-- value: string
Run Code Online (Sandbox Code Playgroud)

df:

#+-------+-------+---------------------------------------------------------------------------+
#|col1   |col2   |customer                                                                   |
#+-------+-------+---------------------------------------------------------------------------+
#|col1_XX|col2_XX|"attributes":[[{"key": "A", "value": "123"},{"key": "B", "value": "456"}]  |
#+-------+-------+---------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

数组的 json 输入如下所示:

...
          "attributes": [
            {
              "key": "A",
              "value": "123"
            },
            {
              "key": "B",
              "value": "456"
            }
          ],
Run Code Online (Sandbox Code Playgroud)

我想循环属性数组并获取元素key="B",然后选择相应的 …

python dataframe apache-spark apache-spark-sql pyspark

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

在java中跳过列表

我在主题下经历了java中的数据结构Skip list,我发现了以下内容:

在跳过列表中n nodes,对于每个ki那样,1 ? k ?lg n并且1 ? i ? n/2k–1? – 1,位置中的节点2k–1· i指向位置中的节点2k–1·(i + 1).这意味着每个第二个节点指向前面两个位置的节点,每四个节点指向前面四个位置的节点,依此类推,如图3.17a所示.这是通过在列表中的节点中具有不同数量的参考字段来实现的:一半节点仅具有一个参考字段,四分之一的节点具有两个参考字段,八分之一的节点具有三个参考字段,因此上.参考字段的数量表示每个节点的级别,级别的数量是maxLevel = ?lg n? + 1.

并且该图是:跳过列表,其中(a)均匀地和(b)不同级别的不均匀节点; (c)清楚显示参考节点的跳过列表.

在此输入图像描述

我不明白数学部分和sktip列表究竟是什么,甚至是节点?

java skip-lists

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

在C中追加到数组中

我有一个给定大小的数组,没有使用任何内存分配,如何在其中添加内容?

假设我运行代码,它等待你要输入的内容,你输入"bond",我如何将它附加到数组中?A [10]?

c arrays append

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

在 pyspark 数据框中平面映射一个collect_set

我有两个数据框,我collect_set()在使用后在 agg 中使用groupbyflatMap聚合后生成数组的最佳方法是什么?

schema = ['col1', 'col2', 'col3', 'col4']

a = [[1, [23, 32], [11, 22], [9989]]]

df1 = spark.createDataFrame(a, schema=schema)

b = [[1, [34], [43, 22], [888, 777]]]

df2 = spark.createDataFrame(b, schema=schema)

df = df1.union(
        df2
    ).groupby(
        'col1'
    ).agg(
        collect_set('col2').alias('col2'),
        collect_set('col3').alias('col3'),
        collect_set('col4').alias('col4')
    )

df.collect()
Run Code Online (Sandbox Code Playgroud)

我得到这个作为输出:

[Row(col1=1, col2=[[34], [23, 32]], col3=[[11, 22], [43, 22]], col4=[[9989], [888, 777]])]
Run Code Online (Sandbox Code Playgroud)

但是,我想要这个作为输出:

[Row(col1=1, col2=[23, 32, 34], col3=[11, 22, 43], col4=[9989, 888, 777])]
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark

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

读取分区镶木地板时,Spark 错误地将以“d”或“f”结尾的分区名称解释为数字

我用来spark.read.parquet()读取镶木地板文件按分区组织的文件夹。f当分区名称以或结尾时,结果将是错误的d。显然,Spark 会将它们解释为数字而不是字符串。我创建了一个最小的测试用例,如下所示来重现该问题。

df = spark.createDataFrame([
            ('9q', 1),
            ('3k', 2),
            ('6f', 3),
            ('7f', 4),
            ('7d', 5),
     ],
     schema='foo string, id integer'
)
df.write.partitionBy('foo').parquet('./tmp_parquet', mode='overwrite')
read_back_df = spark.read.parquet('./tmp_parquet')
read_back_df.show()
Run Code Online (Sandbox Code Playgroud)

将会read_back_df

+---+---+                                                                       
| id|foo|
+---+---+
|  1| 9q|
|  4|7.0|
|  3|6.0|
|  2| 3k|
|  5|7.0|
+---+---+
Run Code Online (Sandbox Code Playgroud)

注意分区6f/7f/7d变为6.0/7.0/7.0

Spark版本是2.4.3。

apache-spark apache-spark-sql pyspark

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

如何获取pyspark中任何列中具有空值的所有行

我需要找到一种方法来获取nullpyspark 数据框中具有值的所有行。

例如,我有以下日期范围:

   +-------+-------+-------+
   |   c_00|   c_01|   c_02|
   +-------+-------+-------+
 1 |  null |  0.141|  0.141|
 2 |   0.17|   0.17|   0.17|
 3 |   0.25|   null|   0.25|
 4 |  0.135|  0.135|  0.135|
Run Code Online (Sandbox Code Playgroud)

我想要所有行在null任何列中都有值

   +-------+-------+-------+
   |   c_00|   c_01|   c_02|
   +-------+-------+-------+
 1 |  null |  0.141|  0.141|
 3 |   0.25|   null|   0.25|
Run Code Online (Sandbox Code Playgroud)

dataframe apache-spark apache-spark-sql pyspark

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