以下是我在一个与我合作的小应用程序中使用Spark-SQL的方法。 我有两个Hbase表说t1,t2。
我的输入是一个csv文件,我解析每一行和查询(SparkSQL)表t1。我将输出写入另一个文件。
现在我解析第二个文件并查询第二个表,并在结果上应用某些函数,然后输出数据。 表t1有购买详情,t2有每个用户添加到购物车的商品列表以及时间范围。
输入 - > CustomerID(csv文件中的列表)
输出 - >下面提到的特定格式的csv文件。
客户ID,他带来的项目的详细信息,他添加到购物车的第一项,他在购买前添加到购物车的所有商品。
对于1100条记录的输入,完成整个过程需要两个小时!
我想知道我是否可以加快这个过程,但我很震惊。 有什么帮助吗?
答案 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}}
希望这会有所帮助..祝你好运。