Я новичок в 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)