Pyspark: AttributeError: у объекта «PipelinedRDD» нет атрибута «_get_object_id» - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь найти определенную строку в файле и затем заменить ее другой конкретной строкой.Я использую ноутбук Zeppelin.Вот мой код до сих пор ..

%pyspark
import fileinput
import sys
from pyspark import SparkContext

sc = SparkContext.getOrCreate()
hivectx = HiveContext(sc)
file = sc.textFile('PATH/my_query.sql')
file1 = sc.textFile('PATH/my_query1sql')
phrase = "(Month|| '-' || '5' || '-' || year)"
replace ="('5' || '/' || month || '/' || year)"

read = file.collect()


//for i in read:
     //print i     ---> this successfully prints out my_query.sql file  


for i in read:
    file1 = file1.map(lambda x: x.replace(phrase, replace))
    file1.saveAsTextFile(file1)   // im trying to save it as the empty file "PATH/my_query.sql" also known as file1.

Тем не менее, я получаю эту ошибку:

AttributeError: 'PipelinedRDD' object has no attribute '_get_object_id' 

Я не могу найти онлайн документацию об этой ошибке с _get_object_id.Подобные ошибки утверждают, что это проблема версии?

Так ли это?Есть ли явная ошибка в моем коде?Извините я нуб на язык: p

1 Ответ

0 голосов
/ 19 октября 2018

Если вы хотите заменить определенный текстовый шаблон в вашем файле, вы можете попробовать следующее без использования Spark, это, вероятно, будет более эффективным для небольшого файла, такого как запрос SQL.

with open('PATH/file.sql','r') as f:
    lines = f.readlines()

phrase = "(Month|| '-' || '5' || '-' || year)"
replace ="('5' || '/' || month || '/' || year)"

new_lines = ''.join([i.replace(phrase,replace) for i in lines])

print(new_lines)

with open('text.sql', 'w') as f:
    f.write(new_lines)

Файл читается и сохраняется здесь в виде списка, затем функция замены будет применена ко всем строкам файла и присоединится к нему.Наконец, напишите файл, который вы хотите сохранить как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...