SparkSQL:我做得对吗?

时间:2016-10-30 05:30:20

标签: apache-spark hbase apache-spark-sql phoenix

以下是我在一个与我合作的小应用程序中使用Spark-SQL的方法。 我有两个Hbase表说t1,t2。

  • 我的输入是一个csv文件,我解析每一行和查询(SparkSQL)表t1。我将输出写入另一个文件。

  • 现在我解析第二个文件并查询第二个表,并在结果上应用某些函数,然后输出数据。 表t1有购买详情,t2有每个用户添加到购物车的商品列表以及时间范围。

输入 - > CustomerID(csv文件中的列表)
输出 - >下面提到的特定格式的csv文件。

客户ID,他带来的项目的详细信息,他添加到购物车的第一项,他在购买前添加到购物车的所有商品。

对于1100条记录的输入,完成整个过程需要两个小时!

我想知道我是否可以加快这个过程,但我很震惊。 有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

这种DataFrame方法怎么样......

1)从CSV创建数据框。

how-to-read-csv-file-as-dataframe 或者类似的例子。

val df = sqlContext.read.format("com.databricks.spark.csv").
                             option("header", "true").
                             option("inferSchema","true").
                             load("cars93.csv")
    val df2=df.filter("quantity <= 4.0")
    val col=df2.col("cost")*0.453592
    val df3=df2.withColumn("finalcost",col)
    df3.write.format("com.databricks.spark.csv").
                             option("header","true").
                             save("output-csv")

2)从Hbase数据创建另一个DataFrame(如果您使用Hortonworks)或phoenix

3)加入并应用函数(可能是udf或者其他等等),结果文件可能再次成为数据框

4)将结果数据框与第二个表&amp;以伪代码的形式输出数据为CSV,如下例所示......

应该可以使用自定义列和相应的值准备数据框,并另存为CSV文件。 你也可以在火花壳中使用它。

{{1}}

希望这会有所帮助..祝你好运。