【发布时间】:2017-08-15 05:09:55
【问题描述】:
我是 scala 的新手。
我有一个 csv 文件存储在 hdfs 中。我正在使用 scala 读取该文件
val salesdata = sc.textFile("hdfs://localhost:9000/home/jayshree/sales.csv")
这里是“销售”数据的一个小样本。
C_ID T_ID ITEM_ID ITEM_Price
5 199 1 500
33 235 1 500
20 249 3 749
35 36 4 757
19 201 4 757
17 94 5 763
39 146 5 763
42 162 5 763
49 41 6 824
3 70 6 824
24 161 6 824
48 216 6 824
我必须对其执行以下操作。
1.对每件商品应用一些折扣,在 d(itemprice) 列上假设 30% 的折扣。公式为 d=d-(30%(d))。
2.在对每件商品应用 30% 的折扣后,找出客户明智的最小和最大商品价值。
我尝试将 30 与 ITEM_Price 列的观察值相乘。问题是 d 的值被视为字符串。当我在结果中乘以一个数字时,它会多次显示该值。比如 (500*3 = 500500500)
我可以将其转换为数据框并执行此操作。但我只是想知道,如果不将其转换为数据帧,我们是否可以对 RDD 进行这些操作。
【问题讨论】:
-
我试图将该列提取为数组[int]。但是,如果我对数组的每个元素进行任何算术运算,则会引发一些错误,例如 * 不是数组 [int] 的一部分。我不需要完整的代码。我只需要一个指南来获得结果。我需要遵循哪些步骤。
标签: scala apache-spark rdd