Я вижу код из книги "Spark The Definition Guide", он вызывает падение на информационном фрейме без параметров, когда я использую show (), я не нашел ничего измененного, но в чем его смысл?
Я выполняю его, ничего не изменилось, dfNoNull.show () - это то же самое, что и dfWithDate.show ()
dfWithDate.createOrReplaceTempView("dfWithDate")
// in Scala
val dfNoNull = dfWithDate.drop()
dfNoNull.createOrReplaceTempView("dfNoNull")
это означает, что он создает новый кадр данных?Я знаю, когда датафрейм объединяется, когда я использую Hive SQL, если я просто
val df1=spark.sql("select id,date from date")
val df2=spark.sql("select id,date from date")
val joinedDf = spark.sql("select dateid1,dateid2 from sales")
.join(df1,df1["id"]===dateid1).join(df2,df2["id"]===dateid2)
Тогда возникает ошибка: декартово соединение!потому что ленивая оценка будет рассматривать df1 и df1 как одно и то же
, поэтому здесь, если я
val df2=df1.drop()
я предотвратим эту ошибку?
Если нет, что делаетметод drop без параметра означает?
Или это просто означает удаление имени временного представления и создание нового?
, но я пробую код, приведенный ниже, без исключений:
val df= Seq((1,"a")).toDF("id","name")
df.createOrReplaceTempView("df1")
val df2=df.drop()
df2.createOrReplaceTempView("df2")
spark.sql("select * from df1").show()
Или книга означает ниже?
val dfNoNull = dfWithDate.na.drop()
, потому что она написана где-то ниже кода:
Группировка наборов зависит от нулевых значений для уровней агрегации.Если вы не отфильтруете нулевые значения, вы получите неверные результаты. Это относится к кубам, сверткам и группам множеств.