使用魔术命令 - Amazon Athena

使用魔术命令

魔术命令,又称魔术,是可在笔记本单元格中运行的特殊命令。例如,%env 可在笔记本会话中显示环境变量。Athena 支持 IPython 6.0.3 中的魔术命令函数。

本节显示了 Athena for Apache Spark 中的一些关键魔术命令。

  • 要查看 Athena 中的魔术命令列表,在笔记本单元格中运行 %lsmagic 命令。

  • 有关在 Athena 笔记本中使用魔术创建图表的信息,请参阅 用于创建数据图表的魔术命令

  • 有关其他魔术命令的更多信息,请参阅 IPython 文档中的内置魔术命令

注意

目前,%pip 命令无法执行。这是一个已知问题。

单元格魔术命令

多行书写的魔术命令前有双百分号(%%),称为单元格魔术命令函数单元格魔术命令

%%sql

此单元格魔术命令允许直接运行 SQL 语句,而无需使用 Spark SQL 语句对其进行装饰。该命令还通过隐式调用 .show() 在返回的数据框上显示输出。


                    使用%%sql。

%%sql 命令会自动将列输出截断为 20 个字符宽度。目前,无法配置此设置。要绕过此限制,使用以下完整语法并相应地修改 show 方法的参数。

spark.sql("""YOUR_SQL""").show(n=number, truncate=number, vertical=bool)
  • n int(可选)。要显示的行数。

  • 截断 - boolint(可选)- 如果为 true,则截断的字符串长度超过 20 个字符。当设置为大于 1 的数字时,讲按指定长度截断长字符串,并使单元格右对齐。

  • 垂直 - bool(可选)。如果为 true,则垂直发送输出行(每列值一行)。

行魔术命令

单行书写的魔术命令前有百分号(%),称为行魔术命令函数行魔术命令

%help

显示可用魔术命令的描述。


                    使用%help。

%list_session

列出与笔记本相关的会话。每个会话的信息包含会话 ID、会话状态以及会话的开始和结束日期和时间。


                    使用%list_sessions。

%session_id

检索当前会话 ID。


                    使用session_id。

%set_log_level

设置或重置记录器以使用指定的日志级别。可能的值为 DEBUGERRORFATALINFOWARNWARNING。值必须为大写且不得包含在单引号或双引号中。


                    使用%set_log_level。

%status

描述当前会话。输出包含会话 ID、会话状态、工作组名称、PySpark 引擎版本和会话开始时间。此魔术命令需要活动会话才能检索会话详细信息。

状态的可能值如下所示:

CREATING - 会话正在启动,包括获取资源。

CREATED - 会话已启动。

IDLE - 会话能够接受计算。

BUSY - 会话正在处理其他任务,无法接受计算。

TERMINATING - 会话正在关闭。

TERMINATED - 会话及其资源不再运行。

DEGRADED - 会话没有运行正常的协调器。

FAILED - 由于故障,会话及其资源不再运行。


                    使用%status。

用于创建数据图表的魔术命令

本节中的行魔术专门针对特定类型的数据或与图形库结合使用渲染数据。

%table

可使用 %table 魔术命令以表格式显示数据框数据。

以下示例创建了一个包含两列和三行数据的数据框,然后以表格式显示数据。


                使用 %table 魔术命令。

%matplot

Matplotlib 是一个综合库,用于在 Python 中创建静态、动画演示和交互式可视化。在将 matplotlib 库导入笔记本单元格后,可使用 %matplot 魔术命令创建图表。

以下示例导入了 matplotlib 库,创建了一组 x 和 y 坐标,然后使用 %matplot 魔术命令创建点图。

import matplotlib.pyplot as plt x=[3,4,5,6,7,8,9,10,11,12] y= [9,16,25,36,49,64,81,100,121,144] plt.plot(x,y) %matplot plt

                使用 %matplot 魔术命令。

同时使用 matplotlib 和 seaborn 库

Seaborn 是一个用于在 Python 中创建统计图形的库。该库基于 matplotlib 构建,并与 pandas(Python 数据分析)数据结构紧密集成。也可以使用 %matplot 魔术命令渲染 seaborn 数据。

以下示例使用 matplotlib 和 seaborn 库创建简单的条形图。

import matplotlib.pyplot as plt import seaborn as sns x = ['A', 'B', 'C'] y = [1, 5, 3] sns.barplot(x, y) %matplot plt

                    使用 %matplot 渲染 seaborn 数据。

%plotly

Plotly 是一个适用于 Python 的开源图形库,可用于创建交互式图表。可使用 %ploty 魔术命令渲染 ploty 数据。

以下示例对股票价格数据使用 StringIO、plotly 和 pandas 库来创建 2015 年 2 月和 3 月的股票活动图表。

from io import StringIO csvString = """ Date,AAPL.Open,AAPL.High,AAPL.Low,AAPL.Close,AAPL.Volume,AAPL.Adjusted,dn,mavg,up,direction 2015-02-17,127.489998,128.880005,126.919998,127.830002,63152400,122.905254,106.7410523,117.9276669,129.1142814,Increasing 2015-02-18,127.629997,128.779999,127.449997,128.720001,44891700,123.760965,107.842423,118.9403335,130.0382439,Increasing 2015-02-19,128.479996,129.029999,128.330002,128.449997,37362400,123.501363,108.8942449,119.8891668,130.8840887,Decreasing 2015-02-20,128.619995,129.5,128.050003,129.5,48948400,124.510914,109.7854494,120.7635001,131.7415509,Increasing 2015-02-23,130.020004,133,129.660004,133,70974100,127.876074,110.3725162,121.7201668,133.0678174,Increasing 2015-02-24,132.940002,133.600006,131.169998,132.169998,69228100,127.078049,111.0948689,122.6648335,134.2347981,Decreasing 2015-02-25,131.559998,131.600006,128.149994,128.789993,74711700,123.828261,113.2119183,123.6296667,134.0474151,Decreasing 2015-02-26,128.789993,130.869995,126.610001,130.419998,91287500,125.395469,114.1652991,124.2823333,134.3993674,Increasing 2015-02-27,130,130.570007,128.240005,128.460007,62014800,123.510987,114.9668484,124.8426669,134.7184854,Decreasing 2015-03-02,129.25,130.279999,128.300003,129.089996,48096700,124.116706,115.8770904,125.4036668,134.9302432,Decreasing 2015-03-03,128.960007,129.520004,128.089996,129.360001,37816300,124.376308,116.9535132,125.9551669,134.9568205,Increasing 2015-03-04,129.100006,129.559998,128.320007,128.539993,31666300,123.587892,118.0874253,126.4730002,134.8585751,Decreasing 2015-03-05,128.580002,128.75,125.760002,126.410004,56517100,121.539962,119.1048311,126.848667,134.5925029,Decreasing 2015-03-06,128.399994,129.369995,126.260002,126.599998,72842100,121.722637,120.190797,127.2288335,134.26687,Decreasing 2015-03-09,127.959999,129.570007,125.059998,127.139999,88528500,122.241834,121.6289771,127.631167,133.6333568,Decreasing 2015-03-10,126.410004,127.220001,123.800003,124.510002,68856600,119.71316,123.1164763,127.9235004,132.7305246,Decreasing """ csvStringIO = StringIO(csvString) from io import StringIO import plotly.graph_objects as go import pandas as pd from datetime import datetime df = pd.read_csv(csvStringIO) fig = go.Figure(data=[go.Candlestick(x=df['Date'], open=df['AAPL.Open'], high=df['AAPL.High'], low=df['AAPL.Low'], close=df['AAPL.Close'])]) %plotly fig

                使用 %ploty 魔术命令。