java spark map函数_如何在Spark中的map函数中使用数据帧?

定义:

> sampleDF是样本数据框,具有用于查找目的的列表记录.

> sampleDS是一个RDD,其中包含元素列表.

> mappingFunction是在sampleDF中查找sampleDS的元素,如果它们存在于sampleDF中则映射到1,如果不存在则映射到0.

我有一个映射函数如下:

def mappingFunction(element):

# The dataframe lookup!

lookupResult = sampleDF.filter(sampleDF[0] == element).collect()

if len(lookupResult) > 0:

print lookupResult

return 1

return 0

问题:

在映射函数之外访问sampleDF工作得非常好但是只要我在函数内部使用它,我就会收到以下错误:

py4j.Py4JException: Method __getnewargs__([]) does not exist

at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)

at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344)

at py4j.Gateway.invoke(Gateway.java:252)

at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)

at py4j.commands.CallCommand.execute(CallCommand.java:79)

at py4j.GatewayConnection.run(GatewayConnection.java:209)

at java.lang.Thread.run(Thread.java:744)

我还尝试了什么:

我确实尝试保存一个临时表并在map函数中使用sqlContext select仍然无法使其工作.这是我得到的错误:

File "/usr/lib64/python2.6/pickle.py",line 286,in save

f(self,obj) # Call unbound method with explicit self

File "/usr/lib64/python2.6/pickle.py",line 649,in save_dict

self._batch_setitems(obj.iteritems())

File "/usr/lib64/python2.6/pickle.py",line 686,in _batch_setitems

save(v)

File "/usr/lib64/python2.6/pickle.py",line 331,in save

self.save_reduce(obj=obj,*rv)

File "/opt/spark/python/pyspark/cloudpickle.py",line 542,in save_reduce

save(state)

File "/usr/lib64/python2.6/pickle.py",line 681,line 306,in save

rv = reduce(self.proto)

TypeError: 'JavaPackage' object is not callable

我要的是:

我试图通过简单的例子来简化我的问题.任何有关如何在地图功能中使用数据框的帮助都非常受欢迎.@H_404_39@

最佳答案@H_404_39@

这不可能. Spark不支持对分布式数据结构(RDD,DataFrame,Datasets)的嵌套操作.即使它确实执行了大量的工作也不是一个好主意.根据您显示的代码,您可能希望将RDD转换为DataFrame并执行join wit

(rdd.map(x => (x,)).toDF(["element"])

.join(sampleDF,sampleDF[0] == df[0])

.groupBy("element")

.agg(count("element") > 0))

在侧面说明打印内部地图是完全没用的,不提及它增加额外的IO开销.@H_404_39@

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值