Использование искрового DataFrame "как" метод

Я смотрю на документацию spark.sql.DataFrame.

Есть

def as(alias: String): DataFrame
    Returns a new DataFrame with an alias set.
    Since
        1.3.0 

Какова цель этого метода? Как это используется? Может ли быть пример?

Мне не удалось найти что-либо об этом методе в Интернете, и документации практически не существует. Мне не удалось создать какой-либо псевдоним, используя этот метод.

1 ответ

Решение

Искра <= 1,5

Это более или менее эквивалентно псевдонимам таблицы SQL:

SELECT *
FROM table AS alias;

Пример использования адаптирован из PySpark alias документация:

import org.apache.spark.sql.functions.col
case class Person(name: String, age: Int)

val df = sqlContext.createDataFrame(
    Person("Alice", 2) :: Person("Bob", 5) :: Nil)

val df_as1 = df.as("df1")
val df_as2 = df.as("df2")
val joined_df = df_as1.join(
    df_as2, col("df1.name") === col("df2.name"), "inner")
joined_df.select(
    col("df1.name"), col("df2.name"), col("df2.age")).show

Выход:

+-----+-----+---+
| name| name|age|
+-----+-----+---+
|Alice|Alice|  2|
|  Bob|  Bob|  5|
+-----+-----+---+

То же самое, используя SQL-запрос:

df.registerTempTable("df")
sqlContext.sql("""SELECT df1.name, df2.name, df2.age
                  FROM df AS df1 JOIN df AS df2
                  ON df1.name == df2.name""")

Какова цель этого метода?

В значительной степени избегая неоднозначных ссылок на столбцы.

Spark 1.6+

Также есть новый as[U](implicit arg0: Encoder[U]): Dataset[U] который используется для преобразования DataFrame к DataSet данного типа. Например:

df.as[Person]
Другие вопросы по тегам