Случай 1: Когда я пытаюсь получить «b.no» с сообщением об ошибке, ниже сообщается код, а также сообщение об ошибке.Как я могу получить значения из второго кадра данных (то есть с псевдонимом b).разрешен ли выбор значений из b или нет здесь.Если я удаляю b.no, он работает нормально.
df1.csv нет, имя, sal 1, sri, 3000 2, ram, 2000 3, sam, 2500 4, kri,5000 5, том, 4000
df2.csv нет, имя, соль 1, шри, 3000 1, вас, 4000 2, баран, 2000 3, сам, 2500 4, кри,5000 5, Том, 4500 5, игрушка, 4200 5, Кой, 4999 6, Джим, 3090 7, Ким, 2080
код:
from pyspark.shell import spark
from pyspark.sql import SQLContext
sc = spark.sparkContext
sqlContext = SQLContext(sc)
df11 = spark.read.option("header","true").option("delimiter", ",").csv("C:\\inputs\\df1.csv")
df22 = spark.read.option("header","true").option("delimiter", ",").csv("C:\\inputs\\df2.csv")
print("df11", df11.count())
print("df22", df22.count())
resDF = df11.alias("a").join(df22.alias("b"), on='no').select("a.no", "a.name", "b.no")
print("resDF", resDF.count())
print("resDF", resDF.distinct().show())
Ошибка:
py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o48.select.: org.apache.spark.sql.AnalysisException: невозможно разрешить 'b.no
' для указанных входных столбцов: [b.sal, a.no, b.name, a.sal, a.name] ;;pyspark.sql.utils.AnalysisException: «не удается разрешить« b.no
»для заданных входных столбцов: [b.sal, a.no, b.name, a.sal, a.name] ;; \ n'Project [no #10, имя № 11, 'b.no] \ n + - AnalysisBarrier \ n + - Проект [№ № 10, имя № 11, номер № 12, имя № 27, номер № 28] \ n + - Join Inner, (нет# 10 = нет № 26) \ n: - SubqueryAlias a \ n: + - Отношение [№ 10, имя № 11, sal # 12] csv \ n + - SubqueryAlias b \ n + - Отношение [№ 26, имя# 27, sal # 28] csv \ n "
Случай 2: когда я использую b.sal, получая дублирующиеся значения, он не отфильтровывается.
resDF = df11.alias("a").join(df22.alias("b"), on='no').select("a.no", "a.name", "b.sal")
print("resDF", resDF.distinct().show())
В этом случае, как получить различные значения, основанные только на «нет».