使用来自服务器路径中Excel文件的spark创建DataFrame

时间:2019-01-17 11:38:55

标签: java apache-spark apache-spark-sql

我正在尝试从服务器加载xls / xlsx文件

使用此代码 https://github.com/crealytics/spark-excel

SparkConf sparkConf = new SparkConf();
SparkContext sparkContext = null;

sparkContext = new SparkContext("local", "234", sparkConf);
SparkSession sparkSession = 
SparkSession.builder().sparkContext(sparkContext).getOrCreate();

SQLContext sqlContext = sparkSession.sqlContext().newSession();
Dataset<Row> dframe = sqlContext.read().format("com.crealytics.spark.excel").option("timestampFormat", "yyyy-mmm-dd HH:mm:ss").option("dataAddress", "'My Sheet'!A1").option("useHeader", "true").option("treatEmptyValuesAsNulls", "false").option("inferSchema", "true")
            .load("/home/test/myfile/sample.xlsx"); // local path

此代码完全适用于本地文件

"/home/test/myfile/sample.xlsx"

我如何在服务器上读取具有这样路径的文件

"http://10.0.0.1:8080/serverFiles/test.xlsx"

我用替换代码 上面的服务器网址出现此错误:

 Exception in thread "main" java.io.IOException: No FileSystem for scheme: http
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2586)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2593)

可以直接从服务器URL读取 xlsx / xls 文件吗? [不适用于CSV]

1 个答案:

答案 0 :(得分:0)

您不能在Spark上下文中直接使用 [{'attributeName': 'File Discount', 'attributeType': 'int', 'attributeValue': '15'}, {'attributeName': 'Returns', 'attributeType': 'text', 'attributeValue': 'Full SOR on all'}] 路径。

请参阅此SO-question