J'utilise Spark 1.3. et Spark Avro 1.0. . Je travaille à partir de l'exemple sur la page du référentiel . Ce code suivant fonctionne bien
val df = sqlContext.read.avro("src/test/resources/episodes.avro")
df.filter("doctor > 5").write.avro("/tmp/output")
Mais que faire si j'ai besoin de voir si la chaîne doctor
contient une sous-chaîne? Depuis que nous écrivons notre expression à l'intérieur d'une chaîne. Que dois-je faire pour faire un "contient"?
Vous pouvez utiliser contains
(cela fonctionne avec une séquence arbitraire):
df.filter($"foo".contains("bar"))
like
(SQL comme avec une expression régulière simple SQL avec _
correspondant à un caractère arbitraire et %
correspondant à une séquence arbitraire):
df.filter($"foo".like("bar"))
ou rlike
(comme avec expressions régulières Java ):
df.filter($"foo".rlike("bar"))
selon vos besoins. LIKE
et RLIKE
devraient également fonctionner avec des expressions SQL.
Dans pyspark, la syntaxe SparkSql:
where column_n like 'xyz%'
pourrait ne pas fonctionner.
Utilisation:
where column_n RLIKE '^xyz'
Cela fonctionne parfaitement bien.