我正在尝试将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上正常工作了...
我在这里做错了什么?如何解决?
答案 0 :(得分:1)
Java中没有DataFrame
这样的东西-它始终是DataSet
类的Row
。在Scala中,有一个简单的别名...
这是通过spark.sql
从Cassandra读取数据的Java代码的最小示例:
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
(full code)来完成:
Dataset<Row> dataset = spark.read()
.format("org.apache.spark.sql.cassandra")
.options(ImmutableMap.of("table", "jtest", "keyspace", "test"))
.load();