Implicit conversions allow extending DataFrame class/trait without inheritance. Code is converted to function calls during compilation.
For example:
sample_df
.langToLowercase
.renameLangColumn
is converted to:
renameLangColumn(langToLowercase(sample_df))
Running this code outputs:
+--------+-----------+ |language|users_count| +--------+-----------+ | Java| 20000| | Python| 100000| | Scala| 3000| +--------+-----------+
+-------------+-----------+ |language_name|users_count| +-------------+-----------+ | java| 20000| | python| 100000| | scala| 3000| +-------------+-----------+
In case of error about StorageUtils see https://stackoverflow.com/questions/72230174/java-17-solution-for-spark-java-lang-noclassdeffounderror-could-not-initializ