У меня есть текстовый файл в форматеScala, чтобы найти общие ценности между двумя списками
a,b,c,d,e
f,g,h,i,j
b,g,k,l,m
g,h,o,p,q
Я хочу выходной файл, который содержит только те строки, значения которых в первом столбце доступно в любом из второго столбца , Например, в этом случае значения в первом столбце последних двух строк являются «b» и «g», которые также доступны где-то во втором столбце. Поэтому мой требуемый вывод имеет только две строки.
b,g,k,l,m
g,h,o,p,q
Согласно моему решению, у меня есть два списка столбцов 1 и столбец 2 с различными значениями. Теперь, как я могу увидеть, доступны ли значения в столбце 1 в столбце2. Связанный код:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.commons.io.IOUtils;
import scala.io.StdIn.{readLine, readInt}
import scala.io.Source
object SimpleApp {
def main(args: Array[String]) {
val logFile = "src/data/s1.txt"
val sc = new SparkContext("spark://Hadoop1:7077", "Simple App", "/usr/local/spark",
List("/usr/local/spark/SimpleSparkProject/target/scala-2.11/simple-project_2.11-1.0.jar"))
val lD = sc.textFile(logFile).cache()
val d2Map = lD map(col2)
val Column2 = d2Map.distinct
val d1Map = lD map(col1)
val Column1 = d1Map.distinct
// Now, here I want only those values in Column1 Which are available in Column2
//Column2.saveAsTextFile("hdfs://Hadoop1:9000/user/output/distDestination")
}
def col2(s:String) : (String) = {
val kv = s.split(",")
val k = kv(1)
k
}
def col1(s:String) : (String) = {
val kv = s.split(",")
val k = kv(0)
k
}
}
Каковы некоторые из вещей, которые вы пробовали? Пожалуйста, напишите код, над которым вы работали, чтобы мы знали, как вам помочь. – Confiqure
См. Мой отредактированный вопрос – Ahmad
Как насчет 'scala> List (" b "," g "," k "," l "," m "). Intersect (List (" g "," h "," o " , "p", "q")) res4: Список [String] = Список (g) ' –