python-2.7 - 在 python 中重命名 pyspark/Spark API 中的 Hadoop 服务器表
问题描述
for elem in list:
final = sqlCtx.read.table('XXX.YYY')
interim = final.join(elem,'user_id', "fullouter")
final = interim.select(['user_id'] + [
spark_combine_first(final[c], elem[c]).alias(c) for c in dup_collect(interim.columns)[0] if c not in ['user_id']] + \
[c for c in dup_collect(interim.columns)[1] if c not in ['user_id']])
final.write.mode("overwrite").saveAsTable("XXX.temp_test")
final2 = sqlCtx.read.table('XXX.temp_test')
final2.write.mode("overwrite").saveAsTable("XXX.YYY")
这是我的模拟代码,如您所见,我正在从一个表中读取数据,然后最终写入 Hadoop 服务器上的同一个表,但是我收到一个错误,即从同一个表读取时无法覆盖该表。
我找到了一个临时解决方法(通过写入一个临时表,然后将其导入一个新的 DataFrame,最后写入所需的表)但是,这似乎非常低效。
我希望有另一种方法,我可以简单地重命名从 spark API 中创建的 temp_table,但没有取得多大成功。
PS:请忽略缩进,我似乎无法在这里获得正确的格式。
解决方案
推荐阅读
- javascript - 根据该数字的旧值更新字符串中的某个数字
- c++ - 从 qmake 转换为 cmake,我如何以相同的方式找到库?
- c++ - 在这种情况下哪个更有效:通过引用返回成员,还是作为指针返回?
- ruby-on-rails - 嵌套的 SCSS 样式在生产中不起作用
- python - TypeError: super(type, obj): obj 必须是类型的实例或子类型,仅当我的元类被导入时
- python - 为什么我只将第一个输入导出到 .txt 文件而不是所有输入?
- ios - testDeviceIdentifiers 的 AdMob kGADSimulatorID 编译错误
- python - 为什么 Tkinter 在任何导入后停止工作?
- c++ - 如何在不使用 opemMP 的情况下按静态顺序运行所有线程?
- tabulator - 远程分页和 last_page:在数据库查询期间或之后过滤?