也可以手动指定用来操作的数据源类型。数据源通常需要使用其全限定名来指定,比如parquet是org.apache.spark.sql.parquet。但是Spark SQL内置了一些数据源类型,比如json,parquet,jdbc等等。实际上,通过这个功能,就可以在不同类型的数据源之间进行转换了。比如将json文件中的数据保存到parquet文件中。默认情况下,如果不指定数据源类型,那么就是parquet。
Java版本
代码语言:javascript复制DataFrame df = sqlContext.read().format("json").load("people.json");
df.select("name", "age").write().format("parquet").save("namesAndAges.parquet");
Scala版本
代码语言:javascript复制val df = sqlContext.read.format("json").load("people.json")
df.select("name", "age").write.format("parquet").save("namesAndAges.parquet")
Java版本
代码语言:javascript复制public class ManuallySpecifyOptions {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("ManuallySpecifyOptions");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
DataFrame peopleDF = sqlContext.read().format("json").load("hdfs://spark1:9000/people.json");
peopleDF.select("name").write().format("parquet").save("hdfs://spark1:9000/peopleName_java");
}
}
Scala版本
代码语言:javascript复制import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object ManuallySpecifyOptions {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName("ManuallySpecifyOptions")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val peopleDF = sqlContext.read.format("json").load("hdfs://spark1:9000/people.json")
peopleDF.select("name").write.format("parquet").save("hdfs://spark1:9000/peopleName_scala")
}
}