मेरे पास एक हीरो आईडी और कनेक्शन के साथ एक डेटाफ्रेम ग्राफकाउंट्स है:

+------+-----------+
|heroId|connections|
+------+-----------+
|   691|          7|
|  1159|         12|
|  3959|        143|
|  1572|         36|
|  2294|         15|
|  1090|          5|
|  3606|        172|
|  3414|          8|
|   296|         18|
|  4821|         17|
|  2162|         42|
|  1436|         10|
|  1512|         12|

मेरे पास एक और डेटाफ्रेम graph_names है जिसमें हीरो आईडी और नाम नीचे दिए गए हैं।

+---+--------------------+
| id|                name|
+---+--------------------+
|  1|24-HOUR MAN/EMMANUEL|
|  2|3-D MAN/CHARLES CHAN|
|  3|    4-D MAN/MERCURIO|
|  4|             8-BALL/|
|  5|                   A|
|  6|               A'YIN|
|  7|        ABBOTT, JACK|
|  8|             ABCISSA|
|  9|                ABEL|
| 10|ABOMINATION/EMIL BLO|
| 11|ABOMINATION | MUTANT|
| 12|         ABOMINATRIX|
| 13|             ABRAXAS|
| 14|          ADAM 3,031|
| 15|             ABSALOM|

मैं एक नक्शा कॉलम बनाने का प्रयास कर रहा हूं जिसका उपयोग heroId को ग्राफकाउंट्स में नाम के साथ graph_names में देखने के लिए किया जा सकता है। जो मुझे त्रुटि से नीचे फेंकता है। मैंने इस मुद्दे का उल्लेख किया है https://issues.apache.org/jira/browse/ SPARK-10925 किसी अन्य थ्रेड से लेकिन मेरे कॉलम नाम समान नहीं हैं। मैं यह जानने के लिए अपवाद संदेश को भी नहीं समझता कि मैं इसे कैसे डिबग कर सकता हूं।

>>> mapper = fn.create_map([graph_names.id, graph_names.name])
>>> mapper
Column<b'map(id, name)'>
>>>
>>> graphcounts.printSchema()
root
 |-- heroId: string (nullable = true)
 |-- connections: long (nullable = true)
>>>
>>> graph_names.printSchema()
root
 |-- id: string (nullable = true)
 |-- name: string (nullable = true)
>>>
>>>
>>> graphcounts.withColumn('name', mapper[graphcounts['heroId']]).show()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/apache-spark/3.0.1/libexec/python/pyspark/sql/dataframe.py", line 2096, in withColumn
    return DataFrame(self._jdf.withColumn(colName, col._jc), self.sql_ctx)
  File "/usr/local/Cellar/apache-spark/3.0.1/libexec/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1305, in __call__
  File "/usr/local/Cellar/apache-spark/3.0.1/libexec/python/pyspark/sql/utils.py", line 134, in deco
    raise_from(converted)
  File "<string>", line 3, in raise_from
pyspark.sql.utils.AnalysisException: Resolved attribute(s) id#242,name#243 missing from heroId#189,connections#203L in operator !Project [heroId#189, connections#203L, map(id#242, name#243)[heroId#189] AS name#286].;;
!Project [heroId#189, connections#203L, map(id#242, name#243)[heroId#189] AS name#286]
+- Project [heroId#189, sum(connections)#200L AS connections#203L]
   +- Aggregate [heroId#189], [heroId#189, sum(cast(connections#192 as bigint)) AS sum(connections)#200L]
      +- Project [value#7, heroId#189, (size(split(value#7,  , -1), true) - 1) AS connections#192]
         +- Project [value#7, split(value#7,  , 2)[0] AS heroId#189]
            +- Relation[value#7] text

0
KanduriR 19 नवम्बर 2020, 22:16

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि के साथ समस्या यह थी कि डेटाफ़्रेम के प्रत्येक स्तंभ के लिए शीर्षलेख हैं। हालांकि जब मैं स्कीमा के साथ पढ़ रहा हूं और हेडर = ट्रू को शामिल किए बिना, हेडर कॉलम नाम कॉलम मानों में से एक बन गया है। लुकअप विफल रहा क्योंकि उस कॉलम के साथ कोई नाम नहीं है।

0
KanduriR 25 नवम्बर 2020, 04:03