Проверьте код ниже, получите все столбцы строки типа и создайте условия фильтрации для этих столбцов.
stringCols = map(
lambda x: x.name,
filter(
lambda x: x.dataType.typeName() == 'string',
df.schema.fields
)
)# Get all string columns.
expr = reduce(
lambda x, y: (x | y),
map(lambda x: col(x).like('%ravi%'), stringCols)
)# Creating expressions, I have used `or`
df = spark.createDataFrame([
(1, 'srinivas', 'sse'),
(2, 'ravi', 'engineer'),
(3, 'Raju', 'ravi se')
],
['id', 'name', 'designation']
)
df.show()
+---+--------+--------------------+
| id| name| designation|
+---+--------+--------------------+
| 1|srinivas| sse |
| 2| ravi| engineer|
| 3| Raju| ravi se |
+---+--------+--------------------+
df.filter(expr).show() # Filter is check 'ravi' value in all string columns.
+---+----+--------------------+
| id|name| designation|
+---+----+--------------------+
| 2|ravi| engineer|
| 3|Raju| ravi se|
+---+----+--------------------+