使用不同的数据源生成SQL

时间:2018-11-09 06:19:48

标签: apache-spark amazon-s3 hive apache-spark-sql

是否可以从2个不同的源创建数据帧并对其进行操作。

例如,

local records = {}
s = "A001BBD0"
for c in string.gmatch(s, "%w") do
    records[c] = records[c] and records[c] + 1 or 1
end

for k,v in pairs(records) do
    if(v > 1) then -- print repeated chars
        print(k,v)
    end
end

如果可能的话,这样做意味着什么?

2 个答案:

答案 0 :(得分:1)

是。可以从不同的数据源读取数据并对其执行操作。 实际上,许多应用程序都需要这些要求。

df1.join(df2).where("df1Key" === "df2Key")

这将执行笛卡尔连接,然后对其应用过滤器。

df1.join(df2,$"df1Key" === $"df2Key")

这应该提供相同的输出。

答案 1 :(得分:1)

Dataframe是与源无关的抽象。我鼓励您阅读有关RDDwiki

的原始文章

抽象是与源无关的,并且跟踪数据的位置和底层DAG操作。数据框API提供了RDD的架构。

您可以从任何来源获取数据框,但是它们均被均化为具有相同的API。 Dataframe API提供了Dataframe阅读器接口,任何基础源都可以实现该接口,以在其之上创建数据帧。 Here是用于数据框的cassandra连接器的另一个示例

一个警告是从不同来源检索数据的速度可能有所不同。例如,如果您的数据在s3中,而在HDFS中则为数据,那么在HDFS顶部创建的数据框上的操作可能会更快。但是,尽管如此,您仍可以对从不同来源创建的数据框执行任何联接。