我试图将结果从Databricks中的spark.sql查询导出到Azure Data Lake Store-ADLS中的文件夹
我要查询的表也位于ADLS中。
我已经使用以下命令从Databricks访问了ADLS中的文件:
// private utilities
/** Validates the position and returns it as a node. */
private Node<E> validate(Position<E> p) throws IllegalArgumentException {
if (!(p instanceof Node)) throw new IllegalArgumentException("Invalid p");
Node<E> node = (Node<E>) p; // safe cast
if (node.getNext( ) == null) // convention for defunct node
throw new IllegalArgumentException("p is no longer in the list");
return node;
}
我正在使用以下命令查询表:
base = spark.read.csv("adl://carlslake.azuredatalakestore.net/landing/",inferSchema=True,header=True)
base.createOrReplaceTempView('basetable')
然后我尝试使用以下方法将结果导出到Azure中的文件夹:
try:
dataframe = spark.sql("select * from basetable where LOAD_ID = 1199")
except:
print("Exception occurred 1166")
else:
print("Table Load_id 1166")
这里有两个奇怪的问题:
我已指定要查询load_id = 1199,尽管没有load_id = 1199,查询仍然成功。
如果第一个“ try”语句失败,我希望第二个“ try”语句失败,但是第二个try语句会考虑第一个“ try”语句。
有人可以让我知道我要去哪里了吗
可以在这里查看表格 thetable
答案 0 :(得分:0)
只是想我会和你分享答案;
try:
dataframe = spark.sql("select * from basetable where LOAD_ID = 1166")
except:
print("Exception occurred 1166")
if dataframe.count() == 0:
print("No data rows 1166")
else:
dataframe.coalesce(1).write.option("header","true").mode("overwrite").csv("adl://carlslake.azuredatalakestore.net/jfolder2/outputfiles/")
rename_file("adl://carlslake.azuredatalakestore.net/jfolder2/outputfiles", "adl://carlslake.azuredatalakestore.net/landing/RAW", "csv", "Delta_LoyaltyAccount_merged")
我希望它也对您有用。