Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark,在尝试加入两个RDD时,我遇到了一个Unicodeincode错误_Python_Apache Spark_Unicode_Pyspark_Encode - Fatal编程技术网

Python Pyspark,在尝试加入两个RDD时,我遇到了一个Unicodeincode错误

Python Pyspark,在尝试加入两个RDD时,我遇到了一个Unicodeincode错误,python,apache-spark,unicode,pyspark,encode,Python,Apache Spark,Unicode,Pyspark,Encode,以上是我做了一张新桌子后得到的。实际上,我使用了以下命令:表3=u“”。连接((表1,表2)).encode('utf-8').strip() 但它不起作用,我会把我的代码和真正的每个RDD输出 创建第一个RDD的代码 UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 261: ordinal not in range(128) 第一个RDD实际输出 table1=sc.textFile('

以上是我做了一张新桌子后得到的。实际上,我使用了以下命令:<代码>表3=u“”。连接((表1,表2)).encode('utf-8').strip() 但它不起作用,我会把我的代码和真正的每个RDD输出

创建第一个RDD的代码

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 261: ordinal not in range(128)
第一个RDD实际输出

table1=sc.textFile('inventory').map(lambda line:next(csv.reader([line]))).map(lambda fields:((fields[0],fields[8],fields[10]),1))
table2=sc.textFile('checkouts').map(lambda line:next(csv.reader([line]))).map(lambda fields:((fields[0],fields[3],fields[5]),1))
创建第二个RDD的代码

[(('BibNum', 'ItemCollection', 'ItemLocation'), 1),
(('3011076', 'ncrdr', 'qna'), 1),
 (('2248846', 'nycomic', 'lcy'), 1)]
第二个RDD实际输出

table1=sc.textFile('inventory').map(lambda line:next(csv.reader([line]))).map(lambda fields:((fields[0],fields[8],fields[10]),1))
table2=sc.textFile('checkouts').map(lambda line:next(csv.reader([line]))).map(lambda fields:((fields[0],fields[3],fields[5]),1))

最后,我尝试了以下代码
table3=u'。连接((table1,table2)).encode('utf-8').strip()
,以连接table1和table2。但它没有起作用。如果你对这个错误有什么想法,请告诉我

让我们看看我是否了解您需要什么。
您有两个RDD,并且希望基于两个值将它们连接起来。
首先,您可以清除rdd的标题(第一行)。
然后定义联接的键,然后执行联接。
我将使用一种效果稍差但易于理解的清洁方法
(你可以在这里找到一个更有效的方法:)


[(('1928264',ncpic'),('1928264',ncpic',12/14/2005 05:56:00 PM'),1),('1928264',ncpic',12/14/2005 05:56:00 PM'),1))]

在您的文本文件中似乎存在编码问题……即使我能够从每个RDD中获取值,文本文件也可能存在一些问题?有没有办法解决这个问题?我想联接每个表。@user8371915的可能重复项我使用了正常联接语法,但它发生了相同的错误,所以我尝试了上述语法。
u'。联接((表1,表2)).encode('utf-8')。strip()
-不是
join
语法。它是一段随机代码,与Spark
连接无关,与名称无关。如果你的代码无论如何都失败了,那么很明显错误不在这里。最好的猜测是在
csv.reader([line])
中,因为
csv
reader不支持unicode。最后,如果您试图按原样加入两个
RDD
,那么您没有看到对RDD联接的期望是什么。如果你希望有人能够回答这个问题,请从开始。先生,以上实际输出是输出的一部分。。所以我需要知道的一般方法可以应用于整个csv文件。。但谢谢你的回答。你说的“一般方式”是什么意思?我向您展示了如何使用两个键连接两个RDD。无论RDD的大小如何,这都将起作用。您可以用相同的方法使用更多或更少的键。您还需要什么?很抱歉让您感到困惑,我的意思是我的csv文件中有这么多行,但是当您使用sc.paralleze时,您亲自将值放入其中,所以可以只放入少量数据吗?我使用sc.paralleze从示例数据生成rdd,您不需要使用它,因为您已经加载了rdd,对吗?我还以为你们的问题是连接…是的,没错,我已经做了两个RDD,所以我的问题只是连接每个RDD,但它不起作用。