Как я могу присоединиться к CSV-файл с таблицей в кусте - PullRequest
1 голос
/ 09 апреля 2019

У меня проблема с join в свече.Я загрузил данные из некоторых CSV-файлов и хочу объединить их в таблицу в улье.

Я пытался сделать это на основе документации, но это не сработало

Iопределил таблицу как

Dataset<Row> table = SparkSession.sql(query);

, и я хочу присоединить ее к

Dataset<Row> data = SparkSession
    .read()
    .format("csv")
    .option("header", true)
    .option("inferSchema", true)
    .load(path1, path2)

Я пробовал с этим

data.join(table, data.col("id1").equalTo(table.col("id2")), "left")

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Хорошо, я получил ответ. Проблема была со схемой, когда вы хотите использовать csv в spark, вам нужно определить схему, когда вы присоединяетесь к таблице, вам нужно определить в ключах схемы, к которым вы присоединились, даже если вы не хотите сохранять это поле как вывод иначе это не сработает

0 голосов
/ 09 апреля 2019

Вам следует попробовать joinWith

data.joinWith(table, data.col("id1").equalTo(table.col("id2"), "left")

Ссылка: https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-joins.html

Редактировать:

вместо left используйте left_outer, left не является типом joinType и There is absolutely no difference between LEFT JOIN and LEFT OUTER JOIN

data.join(table, data.col("id1").equalTo(table.col("id2")), "left_outer")

ref: https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Dataset.html

join

public Dataset<Row> join(Dataset<?> right,
                scala.collection.Seq<String> usingColumns,
                String joinType)
Equi-join with another DataFrame using the given columns.
Different from other join functions, the join columns will only appear once in the output, i.e. similar to SQL's JOIN USING syntax.

Parameters:
right - Right side of the join operation.
usingColumns - Names of the columns to join on. This columns must exist on both sides.
joinType - One of: inner, outer, left_outer, right_outer, leftsemi.
...