Предположим, что у меня есть следующий диапазон данных статей.text_data = [
(1, "I hav a dreem that one day"),
(2, "Ths is a test of the emergncy broadcast systm"),
(3, "Speling errors are commn in som text"),
]
text_df = spark.createDataFrame(text_data, "id: int, article: string")
< /code>
и Dataframe неверных в корреста-карт.dict_data = [
("hav", "have"),
("dreem", "dream"),
("Ths", "This"),
("emergncy", "emergency"),
("systm", "system"),
("Speling", "Spelling"),
("commn", "common"),
("som", "some"),
]
dict_df = spark.createDataFrame(dict_data, "misspelled: string, correct: string")
< /code>
Я пытался найти количество неверных слов в статьях, учитывая, что все неправильные слова были представлены в картировании. Я сделал это двумя способами, один использует левое соединение и группу, в то время как другие используют функции более высокого порядка. Это код. < /P>
Использование соединения и группы, чтобы найти количество неправильных и правильных слов < /li>
< /ol>
(
text_df
.select(
"id"
, F.explode(F.split(F.col("article"), " ")).alias("word")
)
.join(
dict_df
, F.col('word') == dict_df['misspelled']
, 'left'
)
.select(
"id"
, "word"
, dict_df['correct']
)
.groupBy("id")
.agg(
F.count(F.col('word')).alias('Total')
, F.count(F.when(F.col('correct').isNull(), 'isCorrect')).alias('Correct')
, F.count(F.col('correct')).alias('Incorrect')
)
.show()
)
'''
Output
+---+-----+---------+-------+
| id|Total|Incorrect|Correct|
+---+-----+---------+-------+
| 1| 7| 2| 5|
| 2| 9| 3| 6|
| 3| 7| 3| 4|
+---+-----+---------+-------+
'''
< /code>
У меня есть два вопроса -< /p>
Какой из них будет быстрее, чем другой < /li>
Какой из них предпочтительнее, когда увеличивается размер любой статьи или картирования? (Я предполагаю, что можно использовать первый, потому что, если размер картирования увеличится, будет трудно удерживать всю карту в каждой строке)
Предположим, что у меня есть следующий диапазон данных статей.text_data = [ (1, "I hav a dreem that one day"), (2, "Ths is a test of the emergncy broadcast systm"), (3, "Speling errors are commn in som text"), ] text_df = spark.createDataFrame(text_data, "id: int, article: string") < /code> и Dataframe неверных в корреста-карт.dict_data = [ ("hav", "have"), ("dreem", "dream"), ("Ths", "This"), ("emergncy", "emergency"), ("systm", "system"), ("Speling", "Spelling"), ("commn", "common"), ("som", "some"), ] dict_df = spark.createDataFrame(dict_data, "misspelled: string, correct: string") < /code> Я пытался найти количество неверных слов в статьях, учитывая, что все неправильные слова были представлены в картировании. Я сделал это двумя способами, один использует левое соединение и группу, в то время как другие используют функции более высокого порядка. Это код. < /P> [list] [*] Использование соединения и группы, чтобы найти количество неправильных и правильных слов < /li> < /ol> ( text_df .select( "id" , F.explode(F.split(F.col("article"), " ")).alias("word") ) .join( dict_df , F.col('word') == dict_df['misspelled'] , 'left' ) .select( "id" , "word" , dict_df['correct'] ) .groupBy("id") .agg( F.count(F.col('word')).alias('Total') , F.count(F.when(F.col('correct').isNull(), 'isCorrect')).alias('Correct') , F.count(F.col('correct')).alias('Incorrect') ) .show() )
''' Output +---+-----+---------+-------+ | id|Total|Incorrect|Correct| +---+-----+---------+-------+ | 1| 7| 2| 5| | 2| 9| 3| 6| | 3| 7| 3| 4| +---+-----+---------+-------+ ''' < /code> У меня есть два вопроса -< /p>
Какой из них будет быстрее, чем другой < /li> Какой из них предпочтительнее, когда увеличивается размер любой статьи или картирования? (Я предполагаю, что можно использовать первый, потому что, если размер картирования увеличится, будет трудно удерживать всю карту в каждой строке) [/list]
Таблица 1 содержит 10 строк, которые необходимо заполнить недостающими данными.
Таблица 2 содержит 100 строк потенциальных совпадений.
В обеих таблицах есть столбцы x,y,z.
Я хочу соедините одну строку из таблицы 2 с каждой строкой в таблице 1....