Я выполняю сценарий, используя пряжу spark-shell --master, как показано ниже
У меня есть текстовый файл в папке HDFS "/user/cloudera/Day_12_Jan/file.txt"
Содержимое файла
Spark SQL - это модуль Spark для структурированной обработки данных.
язык запросов высокого уровня и дополнительная информация о типах делает Spark SQL
более эффективным. Spark SQL переводит команды в коды, которые
обработано исполнителями. Некоторые настройки могут повлиять на Spark
Производительность SQL. Для эффективного представления наших данных он также использует
знание типов очень эффективно. Spark SQL играет большую роль в
оптимизация запросов.
Spark SQL использует колоночное хранилище в памяти при кэшировании данных.
Колонка в памяти - это функция, которая позволяет хранить данные в
столбчатый формат, а не формат строки. Колоннарное хранилище позволяет
Сам по себе очень хорошо для аналитических запросов, найденных в бизнес-аналитике
товар. Используя колоночное хранилище, данные занимают меньше места при кэшировании
и если запрос зависит только от подмножеств данных, то Spark SQL
сводит к минимуму чтение данных.
Далее я читаю этот файл в spark-shell, как показано ниже
scala> val readwords=sc.textFile("hdfs://localhost:8020/user/cloudera/Day_12_Jan/file.txt")
readwords: org.apache.spark.rdd.RDD[String] = hdfs://localhost:8020/user/cloudera/Day_12_Jan/file.txt MapPartitionsRDD[6] at textFile at <console>:27
scala> readwords.glom().map(x=>("".join(x))).flatMap(line=>(line.split("."))).map(word=>(word,1)).reduceByKey((a,b)=>(a+b)).sortByKey.collect
<console>:30: error: value join is not a member of String
readwords.glom().map(x=>("".join(x))).flatMap(line=>(line.split("."))).map(word=>(word,1)).reduceByKey((a,b)=>(a+b)).sortByKey.collect
^
Существует ошибка, из-за которой glom создал массив строк, и операция присоединения не может быть применена к строке, что мне кажется правильным
Но если я беру тот же кусок кода в pyspark, я вижу, что он не жалуется с той же ошибкой
Так как glom () не является специфичным для scala или python, и это искровое преобразование, так почему он работает в pyspark, а не в spark-shell
pyspark выполнение задачи
>>> sentences=readwords.glom().map(lambda x:"".join(x)).flatMap(lambda y:y.split(".")).flatMap(lambda z:z.split( )).map(lambda a:(a,1)).reduceByKey(lambda a,b:a+b).map(lambda a:(a[1],a[0])).sortByKey(False)
>>> for row in sentences.collect():
... print(row)
...
(9, u'the')
(8, u'Spark')
(7, u'SQL')
(6, u'data')
(5, u'of')
(5, u'columnar')
Дайте мне знать, если я что-то здесь не так делаю.
Спасибо
Сумит Павар