【发布时间】:2020-03-28 05:56:39
【问题描述】:
世界,
如何使用 Spark-Scala 从网上下载 CSV 文件并将文件加载到 spark-csv DataFrame 中?
目前我依靠 shell 命令中的 curl 来获取我的 CSV 文件。
这是我要增强的语法:
/* fb_csv.scala
This script should load FB prices from Yahoo.
Demo:
spark-shell -i fb_csv.scala
*/
// I should get prices:
import sys.process._
"/usr/bin/curl -o /tmp/fb.csv http://ichart.finance.yahoo.com/table.csv?s=FB"!
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val fb_df = sqlContext.read.format("com.databricks.spark.csv").option("header","true").option("inferSchema","true").load("/tmp/fb.csv")
fb_df.head(9)
我想增强上面的脚本,使它成为纯 Scala,里面没有 shell 语法。
【问题讨论】:
-
我认为您最好的方法是读取 spark 代码之外的 URI 内容并将生成的序列转换为 DataFrame。
-
@TheArchetypalPaul 我会将其解读为火花内的流。你怎么看?
-
我查了一下,但找不到更多细节 - 你有关于如何从 URL 执行此操作的指针吗?还有,这些是单只股票的价格,我相信数据集不会很大……
-
@TheArchetypalPaul 我没有尝试过这个解决方案是否真的可扩展,但我正在考虑这样的事情:
sc.parallelize(scala.io.Source.fromURL("http://ichart.finance.yahoo.com/table.csv?s=FB").getLines.toStream) -
不要认为流在那里添加任何东西。我以为你的意思是火花流
标签: scala csv apache-spark