pyspark.pandas.sql
的用法。用法:
pyspark.pandas.sql(query: str, index_col: Union[str, List[str], None] = None, globals: Optional[Dict[str, Any]] = None, locals: Optional[Dict[str, Any]] = None, **kwargs: Any) → pyspark.pandas.frame.DataFrame
执行 SQL 查询并将结果作为pandas-on-Spark DataFrame 返回。
此函数还支持通过将 Python 变量(局部变量、全局变量和参数)包在花括号中来在 SQL 语句中嵌入它们。有关详细信息,请参阅示例部分。
除了局部变量、全局变量和参数之外,该函数还将尝试确定程序当前是否在 IPython(或 Jupyter)环境中运行,并从该环境中导入变量。变量与全局变量具有相同的优先级。
支持以下变量类型:
string
int
float
列表、元组、上述类型的范围
pandas-on-Spark DataFrame
pandas-on-Spark系列
Pandas DataFrame
- query:str
SQL 查询
- index_col:str 或 str 列表,可选
在 Spark 中用于表示 pandas-on-Spark 的索引的列名。 pandas-on-Spark 中的索引名称被忽略。默认情况下,索引总是丢失。
注意
如果要保留索引,请显式使用
DataFrame.reset_index()
,并将其传递给带有index_col
参数的 sql 语句。例如,
>>> psdf = ps.DataFrame({"A": [1, 2, 3], "B":[4, 5, 6]}, index=['a', 'b', 'c']) >>> psdf_reset_index = psdf.reset_index() >>> ps.sql("SELECT * FROM {psdf_reset_index}", index_col="index") ... A B index a 1 4 b 2 5 c 3 6
对于多索引,
>>> psdf = ps.DataFrame( ... {"A": [1, 2, 3], "B": [4, 5, 6]}, ... index=pd.MultiIndex.from_tuples( ... [("a", "b"), ("c", "d"), ("e", "f")], names=["index1", "index2"] ... ), ... ) >>> psdf_reset_index = psdf.reset_index() >>> ps.sql("SELECT * FROM {psdf_reset_index}", index_col=["index1", "index2"]) ... A B index1 index2 a b 1 4 c d 2 5 e f 3 6
另请注意,索引名称应与现有名称匹配。
- globals:字典,可选
全局变量字典,如果由用户明确设置
- locals:字典,可选
局部变量的字典,如果由用户明确设置
- kwargs:
用户可能希望手动设置的可在查询中引用的其他变量
- pandas-on-Spark DataFrame
参数:
返回:
例子:
调用内置 SQL 函数。
>>> ps.sql("select * from range(10) where id > 7") id 0 8 1 9
查询还可以通过用花括号括起来来引用局部变量或参数:
>>> bound1 = 7 >>> ps.sql("select * from range(10) where id > {bound1} and id < {bound2}", bound2=9) id 0 8
您还可以用大括号括起来DataFrame来直接查询它。请注意,执行此操作时,索引(如果有)会自动成为顶级列。
>>> mydf = ps.range(10) >>> x = range(4) >>> ps.sql("SELECT * from {mydf} WHERE id IN {x}") id 0 0 1 1 2 2 3 3
查询也可以任意嵌套在函数中:
>>> def statement(): ... mydf2 = ps.DataFrame({"x": range(2)}) ... return ps.sql("SELECT * from {mydf2}") >>> statement() x 0 0 1 1
在连接操作中混合 pandas-on-Spark 和 pandas DataFrames。请注意,索引已被删除。
>>> ps.sql(''' ... SELECT m1.a, m2.b ... FROM {table1} m1 INNER JOIN {table2} m2 ... ON m1.key = m2.key ... ORDER BY m1.a, m2.b''', ... table1=ps.DataFrame({"a": [1,2], "key": ["a", "b"]}), ... table2=pd.DataFrame({"b": [3,4,5], "key": ["a", "b", "b"]})) a b 0 1 3 1 2 4 2 2 5
此外,还可以使用 Series 进行查询。
>>> myser = ps.Series({'a': [1.0, 2.0, 3.0], 'b': [15.0, 30.0, 45.0]}) >>> ps.sql("SELECT * from {myser}") 0 0 [1.0, 2.0, 3.0] 1 [15.0, 30.0, 45.0]
相关用法
- Python pyspark session_window用法及代码示例
- Python pyspark second用法及代码示例
- Python pyspark slice用法及代码示例
- Python pyspark size用法及代码示例
- Python pyspark struct用法及代码示例
- Python pyspark spark_partition_id用法及代码示例
- Python pyspark split用法及代码示例
- Python pyspark shiftleft用法及代码示例
- Python pyspark schema_of_csv用法及代码示例
- Python pyspark sequence用法及代码示例
- Python pyspark sort_array用法及代码示例
- Python pyspark sha1用法及代码示例
- Python pyspark substring用法及代码示例
- Python pyspark shiftright用法及代码示例
- Python pyspark shiftrightunsigned用法及代码示例
- Python pyspark sha2用法及代码示例
- Python pyspark substring_index用法及代码示例
- Python pyspark schema_of_json用法及代码示例
- Python pyspark sentences用法及代码示例
- Python pyspark soundex用法及代码示例
- Python pyspark shuffle用法及代码示例
- Python pyspark create_map用法及代码示例
- Python pyspark date_add用法及代码示例
- Python pyspark DataFrame.to_latex用法及代码示例
- Python pyspark DataStreamReader.schema用法及代码示例
注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.sql。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。