Pyspark user_agent парсинг - PullRequest
       0

Pyspark user_agent парсинг

0 голосов
/ 03 апреля 2020

Я новичок в PySpark, спросите совета. Я использую https://pypi.org/project/user-agents/ для кадра данных PySpark

Я хотел бы применить библиотеку user_agents для столбца данных PySpark (user_agent). запись user_agent: user_agent = 'Mozilla / 5.0 (Linux; Android 8.1.0; SM-T580) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 79.0.3945.93 Safari / 537.36

My код:

from user_agents import parse 

df = df.withColumn("browser", parse((df.user_agent.cast("string")))) 

Ошибка:

 TypeError: unhashable type: 'Column'

Я сделал это таким образом, но это занимает слишком много времени (как я могу его оптимизировать):

    from user_agents import parse
    vals_init = [("", "", "","","")]
    columns = ['browser', 'os', 'device-brand','device-family',   
    'device-model' ]
    df1 = spark.createDataFrame(vals_init, columns)
    for row in df.rdd.collect():
    #    str(row.user_agent)
    #    user_agent = parse(str(row.user_agent))
       print(user_agent.browser[0])  #browser
       print(user_agent.os[0])  #OS
       print(user_agent.device.family)  # returns 'iPhone'
       print(user_agent.device.brand) # returns 'Apple'
       print(user_agent.device.model) # returns 'iPhone'
       vals = [(user_agent.browser[0],  
       user_agent.os[0],user_agent.device.family,
       user_agent.device.family,user_agent.device.brand,
       user_agent.device.model)]

       newRow =       
       spark.createDataFrame([(user_agent.browser[0],user_agent.os[0],                                           
       user_agent.device.family,user_agent.device.brand,
       user_agent.device.model)], columns)
       df1 = df1.union(newRow)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...