可以說,我是從HDFS使用類似下面的導入平面文件到火花:Array對元組與許多輸入變量星火
val data = sc.textFile("hdfs://name_of_file.tsv").map(_.split('\t'))
這將產生一個Array[Array[String]]
。如果我想要一個元組數組,我可以像這個solution中所引用的那樣進行操作,並將這些元素映射到一個元組中。
val dataToTuple = data.map{ case Array(x,y) => (x,y) }
但是如果我的輸入數據有說100列?有沒有一種方式在斯卡拉使用某種通配符說
val dataToTuple = data.map{ case Array(x,y, ...) => (x,y, ...) }
而不必寫出100個變量匹配?
我試着做一些像
val dataToTuple = data.map{ case Array(_) => (_) }
但是這似乎並沒有太大的意義。
爲什麼要使用一個包含100個元素的元組?只需使用'split'生成的數組? –
如果你確實需要這個,你可以創建一個'Row'而不是'Tuple' –
- 你可以使用Shapeless庫:http://stackoverflow.com/a/19901310/1809978但是請注意,元組的最大尺寸是有限的斯卡拉到22(我上次檢查它)+我相信,你仍然必須指定每列的類型。此外,它可能不是你實際需要的 – dk14