有谁知道如何在SparkR版本1.4.0中读取文本文件? 有没有可用的Spark软件包?
答案 0 :(得分:3)
Spark 1.6 +
您可以使用text
输入格式将文本文件读取为DataFrame
:
read.df(sqlContext=sqlContext, source="text", path="README.md")
Spark< = 1.5
简短的回答是你没有。 SparkR 1.4几乎完全脱离了低级API,只留下了有限的数据帧操作子集。 正如您可以阅读old SparkR webpage:
截至2015年4月,SparkR已正式合并到Apache Spark中,并将在即将发布的版本(1.4)中发布。 (...)对R的Spark的初始支持主要集中在高级操作而不是低级ETL。
最接近的是使用spark-csv
加载文本文件:
> df <- read.df(sqlContext, "README.md", source = "com.databricks.spark.csv")
> showDF(limit(df, 5))
+--------------------+
| C0|
+--------------------+
| # Apache Spark|
|Spark is a fast a...|
|high-level APIs i...|
|supports general ...|
|rich set of highe...|
+--------------------+
由于典型的RDD操作(例如map
,flatMap
,reduce
或filter
也已消失,因此无论如何都可能是您想要的。
现在,低级API仍在下面,所以你总是可以做下面这样的事情,但我怀疑这是个好主意。 SparkR开发人员很可能有充分理由将其设为私有。引用:::
手册页:
从那以后在代码中使用':::'通常是一个设计错误 相应的对象可能已经保留在内部 好理由。如果您愿意,请考虑联系软件包维护者 觉得除了光之外还需要访问对象 检查。
即使你愿意忽略良好的编码习惯,我也很可能不值得花时间。 Pre 1.4低级API令人尴尬地缓慢且笨拙,并且没有Catalyst优化器的所有优点,它在内部1.4 API时很可能是相同的。
> rdd <- SparkR:::textFile(sc, 'README.md')
> counts <- SparkR:::map(rdd, nchar)
> SparkR:::take(counts, 3)
[[1]]
[1] 14
[[2]]
[1] 0
[[3]]
[1] 78
与spark-csv
不同,textFile
不会忽略空行。
答案 1 :(得分:0)
请点击链接 http://ampcamp.berkeley.edu/5/exercises/sparkr.html
我们可以简单地使用 -
<script type="text/javascript">
$("#bto_update_quantity").click(function (){
$.ajax({
url:"cart/update_quantity",
type:"get",
dataType:"text",
data : {
id : $('.frm_product_id_cart').text(),
name : $('.frm_product_name_cart').text(),
quantity : $('#frm_product_quantity_cart').val()
},
success : function()
{
$('#frm_product_quantity_cart').val()
}});
});
</script>
在检查SparkR代码时,Context.R有textFile方法,所以理想情况下,SparkContext必须有textFile API来创建RDD,但在doc中缺少。
textFile <- textFile(sc, "/home/cloudera/SparkR-pkg/README.md")
点击链接 https://github.com/apache/spark/blob/master/R/pkg/R/context.R
对于测试用例 https://github.com/apache/spark/blob/master/R/pkg/inst/tests/test_rdd.R
答案 2 :(得分:0)
事实上,您可以使用databricks / spark-csv包来处理tsv文件。
例如,
data <- read.df(sqlContext, "<path_to_tsv_file>", source = "com.databricks.spark.csv", delimiter = "\t")
这里提供了许多选项 - databricks-spark-csv#features