[spark-cassandra-connector] Как преобразовать неявный поддерживаемый код Scala в Java в Spark 2.3.1 - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь провести рефакторинг проекта, используемого в spark-cassandra, от scala_2.11 до java_1.8.Я использую spark-sql_2.11-2..3.1 и spark-cassandra-connector_2.11-2.3.1.Теперь я пытаюсь изменить код в Java 1.8.

У меня есть несколько последствий, и DataFrame был использован.

import com.datastax.spark.connector._
import spark.implicits._
    &
import org.apache.spark.sql.DataFrame

Теперь, как преобразовать их в эквивалентный код Java?любой образец?

импорт DataFrame не распознается / не определен, работает нормально со Scala 2.11, теперь он не работает ...

Что я здесь не так делаю?Как это исправить?

1 Ответ

1 голос
/ 17 апреля 2019

В Java нет такой вещи как DataFrame - это всегда DataSet класса Row.В Scala есть простой псевдоним для этого ...

Вот минимальный пример кода Java, который читает данные из Cassandra через spark.sql:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public class SparkTest1 {

  public static void main(String[] args) {
    SparkSession spark = SparkSession
    .builder()
    .appName("CassandraSpark")
    .getOrCreate();

    Dataset<Row> sqlDF = spark.sql("select * from datastax.vehicle limit 1000");
    sqlDF.printSchema();
    sqlDF.show();
  }

}

или это можно сделатьчерез spark.read ( полный код ):

Dataset<Row> dataset = spark.read()
        .format("org.apache.spark.sql.cassandra")
        .options(ImmutableMap.of("table", "jtest", "keyspace", "test"))
        .load();
...