如何在没有公共密钥的情况下合并 Apache Spark 中的两个数据帧?

Posted

技术标签:

【中文标题】如何在没有公共密钥的情况下合并 Apache Spark 中的两个数据帧?【英文标题】:How to merge two dataframes in Apache Spark without common key? 【发布时间】:2016-10-05 14:21:04 【问题描述】:

我正在尝试加入两个数据框。

数据:DataFrame[_1: bigint, _2: vector]

集群:DataFrame[集群:bigint]

result = data.join(broadcast(cluster))

奇怪的是,所有的执行者都在加入步骤中失败了。

我不知道我能做什么。

HDFS 上的数据文件为 2.8 GB,集群数据仅为 5 MB。 使用 Parquet 读取文件。

【问题讨论】:

你能发布你得到的确切错误吗? 确切的错误是执行器失败了。找不到明确的。我现在知道答案了:) 【参考方案1】:

这是什么工作:

data = sqlContext.read.parquet(data_path)
data = data.withColumn("id", monotonicallyIncreasingId())

cluster = sqlContext.read.parquet(cluster_path)  
cluster = cluster.withColumn("id", monotonicallyIncreasingId())

result = data.join(cluster, on="id")

将集群DataFrame直接添加到数据DataFrame中:

data.withColumn("cluster", cluster.cluster)

不起作用。

data.join(cluster)

同样不起作用,执行程序在有足够内存的情况下失败。

不知道为什么它不起作用......

【讨论】:

以上是关于如何在没有公共密钥的情况下合并 Apache Spark 中的两个数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

apache发布文件的验证签名

如何在没有服务器的情况下在本地测试我的 ssh 密钥

AWS EC2如何在没有密钥的情况下连接?

如何在没有密钥的情况下解析 JSON 文件?

如何在没有 ArrayIndexOutOfBoundsException 的情况下通过 executeBatch 获取生成的密钥?

如何在 PHP 中没有硬编码密钥的情况下进行对称加密