在SparkR 1.4.0中读取文本文件

时间:2015-07-01 09:33:55

标签: r apache-spark sparkr

有谁知道如何在SparkR版本1.4.0中读取文本文件? 有没有可用的Spark软件包?

3 个答案:

答案 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操作(例如mapflatMapreducefilter也已消失,因此无论如何都可能是您想要的。

现在,低级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