sagemaker-studio-dataengineering-sessions 1.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sagemaker_studio_dataengineering_sessions/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/py.typed +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/__init__.py +7 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/base_session_manager.py +162 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/boto3_models/datazone/2018-05-10/service-2.json +31733 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/boto3_models/glue/2017-03-31/service-2.json +18867 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/constants.py +137 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/datazone_gateway.py +95 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/debugging_utils.py +24 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/exceptions.py +53 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/glue_gateway.py +52 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/ipython_display.py +31 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/logger_utils.py +28 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/metadata_utils.py +13 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/sagemaker_connection_display.py +44 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/common/sagemaker_toolkit_utils.py +150 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/__init__.py +12 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/dataframe_wrapper.py +30 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_connection_magic.py +1208 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/display_compute.py +476 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/display_function.py +92 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/display_render.py +912 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/run_statement.py +45 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/style_constants.py +371 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/sagemaker_display_magic/utils.py +15 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/utils/aws_profile_helper.py +77 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/utils/cell_transformer.py +155 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/utils/constants.py +39 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_connection_magic/utils/credential_process_script.py +35 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/__init__.py +7 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/athena/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/athena/athena_config.py +6 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/athena/athena_connection.py +6 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/athena/athena_session.py +30 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/athena/connection_transformer.py +27 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/db_connection_pool.py +12 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/redshift/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/redshift/connection_transformer.py +86 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/redshift/redshift_config.py +5 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/redshift/redshift_connection.py +16 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/redshift/redshift_session.py +72 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/sagemaker_database_session_manager.py +133 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_database_session_manager/utils/common_utils.py +13 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/__init__.py +7 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/__init__.py +1 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/connection_transformer.py +67 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/custom_authenticator.py +40 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/emr_on_ec2_connection.py +19 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/emr_on_ec2_gateway.py +25 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/emr_on_ec2_session.py +190 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_ec2/governance_type.py +7 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/connection_tranformer.py +37 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/custom_authenticator.py +143 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/emr_on_serverless_connection.py +8 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/emr_on_serverless_session.py +158 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/emr_on_serverless/emr_serverless_gateway.py +36 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/livy_session.py +298 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/emr_session_manager/spark_magic.py +11 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/__init__.py +1 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/connection_transformer.py +114 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/glue_connection.py +19 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/glue_kernel_utils/GlueSessionsConstants.py +56 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/glue_kernel_utils/KernelGateway.py +342 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/glue_session.py +773 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/glue_session_manager/glue_session_configs/config.py +21 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/spark_commands/send_to_spark_command.py +76 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/spark_session_manager/__init__.py +0 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/spark_session_manager/spark_monitor_widget_utils.py +65 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/spark_session_manager/spark_session.py +124 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/utils/common_utils.py +18 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/utils/lib_utils.py +100 -0
- sagemaker_studio_dataengineering_sessions/sagemaker_spark_session_manager/utils/metadata_utils.py +19 -0
- sagemaker_studio_dataengineering_sessions-1.0.2.dist-info/METADATA +114 -0
- sagemaker_studio_dataengineering_sessions-1.0.2.dist-info/RECORD +79 -0
- sagemaker_studio_dataengineering_sessions-1.0.2.dist-info/WHEEL +4 -0
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.logger_utils import setup_logger
|
|
4
|
+
|
|
5
|
+
logging.basicConfig(level=logging.INFO)
|
|
6
|
+
logger = logging.getLogger(__name__)
|
|
7
|
+
setup_logger(logger, "SageMakerBaseSessionManager", "connection_magic")
|
sagemaker_studio_dataengineering_sessions/sagemaker_base_session_manager/base_session_manager.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
from sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.constants import Language
|
|
5
|
+
from sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.sagemaker_connection_display import SageMakerConnectionDisplay
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BaseSessionManager(metaclass=abc.ABCMeta):
|
|
9
|
+
|
|
10
|
+
def __init__(self) -> None:
|
|
11
|
+
# The limit for the number of rows that can be returned in a SQL query. Defaults to 10000.
|
|
12
|
+
self.sql_result_row_limit = 10_000
|
|
13
|
+
|
|
14
|
+
@abc.abstractmethod
|
|
15
|
+
def create_session(self):
|
|
16
|
+
"""
|
|
17
|
+
Create a new session
|
|
18
|
+
"""
|
|
19
|
+
raise NotImplementedError('Must define create_session to use this BaseSessionManager')
|
|
20
|
+
|
|
21
|
+
@abc.abstractmethod
|
|
22
|
+
def run_statement(self, cell="", language: Language = None):
|
|
23
|
+
"""
|
|
24
|
+
Run a statement against the session
|
|
25
|
+
:param cell: the code to run
|
|
26
|
+
"""
|
|
27
|
+
raise NotImplementedError('Must define run_statement to use this BaseSessionManager')
|
|
28
|
+
|
|
29
|
+
@abc.abstractmethod
|
|
30
|
+
def stop_session(self):
|
|
31
|
+
"""
|
|
32
|
+
Stop the session
|
|
33
|
+
"""
|
|
34
|
+
raise NotImplementedError('Must define stop_session to use this BaseSessionManager')
|
|
35
|
+
|
|
36
|
+
@abc.abstractmethod
|
|
37
|
+
def is_session_connectable(self) -> bool:
|
|
38
|
+
"""
|
|
39
|
+
Check if the session is connectable and in a valid status for running statement
|
|
40
|
+
:return: true if the session is in a valid status, false otherwise
|
|
41
|
+
"""
|
|
42
|
+
raise NotImplementedError('Must define is_session_connectable to use this BaseSessionManager')
|
|
43
|
+
|
|
44
|
+
@abc.abstractmethod
|
|
45
|
+
def _configure_core(self, cell: str):
|
|
46
|
+
"""
|
|
47
|
+
To configure current compute to be connected and start a new session with applied configuration
|
|
48
|
+
:param cell: the content to be applied for the session
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
def configure(self, cell: str, force: bool = False):
|
|
52
|
+
"""
|
|
53
|
+
To configure current compute to be connected and start a new session with applied configuration
|
|
54
|
+
:param cell: the content to be applied for the session
|
|
55
|
+
:param force: a boolean to check if a user wants to force start a new session to apply configuration
|
|
56
|
+
"""
|
|
57
|
+
if self.is_session_connectable():
|
|
58
|
+
if not force:
|
|
59
|
+
SageMakerConnectionDisplay.send_error(
|
|
60
|
+
"A session has already been started. If you intend to recreate the "
|
|
61
|
+
"session with new configurations, please include the -f or --force argument.")
|
|
62
|
+
else:
|
|
63
|
+
self.stop_session()
|
|
64
|
+
self._configure_core(cell)
|
|
65
|
+
self.create_session()
|
|
66
|
+
else:
|
|
67
|
+
self._configure_core(cell)
|
|
68
|
+
return
|
|
69
|
+
|
|
70
|
+
def send_to_remote(self, local_var: str, remote_var: str, language=Language.python):
|
|
71
|
+
# Not an abstract method because by default a session manager does not support this
|
|
72
|
+
# only Spark session manager supports this for now.
|
|
73
|
+
"""
|
|
74
|
+
Send a local variable in kernel's userspace to remote compute.
|
|
75
|
+
e.g: for an EMR cluster, send a local variable to spark
|
|
76
|
+
:param local_var: local variable name
|
|
77
|
+
:param remote_var: remote variable name
|
|
78
|
+
"""
|
|
79
|
+
raise NotImplementedError('Send_to_remote is not supported')
|
|
80
|
+
|
|
81
|
+
def get_info(self):
|
|
82
|
+
"""
|
|
83
|
+
Get information about the connected compute session
|
|
84
|
+
"""
|
|
85
|
+
raise NotImplementedError('get_info is not supported for current session')
|
|
86
|
+
|
|
87
|
+
def get_session_id(self):
|
|
88
|
+
"""
|
|
89
|
+
Get the session ID of the connected compute session
|
|
90
|
+
"""
|
|
91
|
+
raise NotImplementedError('get_session_id is not supported for current session')
|
|
92
|
+
|
|
93
|
+
def get_status(self):
|
|
94
|
+
"""
|
|
95
|
+
Get the status of the connected compute session
|
|
96
|
+
"""
|
|
97
|
+
raise NotImplementedError('get_status is not supported for current session')
|
|
98
|
+
|
|
99
|
+
def add_tags(self, tags: str):
|
|
100
|
+
"""
|
|
101
|
+
Add tags to the connected compute session resources
|
|
102
|
+
"""
|
|
103
|
+
raise NotImplementedError('add_tags is not supported for current session')
|
|
104
|
+
|
|
105
|
+
def get_logs(self):
|
|
106
|
+
"""
|
|
107
|
+
Gets the current session's Livy logs
|
|
108
|
+
"""
|
|
109
|
+
raise NotImplementedError('get_logs is not supported for current session')
|
|
110
|
+
|
|
111
|
+
def matplot(self, line: str):
|
|
112
|
+
"""
|
|
113
|
+
Using matplotlib to plot the current session's plot'
|
|
114
|
+
"""
|
|
115
|
+
raise NotImplementedError('matplot is not supported for current session')
|
|
116
|
+
|
|
117
|
+
def set_session_id_prefix(self, prefix: str, force: bool = False):
|
|
118
|
+
"""
|
|
119
|
+
Sets the session ID prefix of the session to be created
|
|
120
|
+
"""
|
|
121
|
+
raise NotImplementedError('set_session_id_prefix is not supported for current session')
|
|
122
|
+
|
|
123
|
+
def set_number_of_workers(self, number: str, force: bool = False):
|
|
124
|
+
"""
|
|
125
|
+
Sets the number of workers of the session to be created
|
|
126
|
+
"""
|
|
127
|
+
raise NotImplementedError('set_number_of_workers is not supported for current session')
|
|
128
|
+
|
|
129
|
+
def set_worker_type(self, type: str, force: bool = False):
|
|
130
|
+
"""
|
|
131
|
+
Sets the worker type of the session to be created
|
|
132
|
+
"""
|
|
133
|
+
raise NotImplementedError('set_worker_type is not supported for current session')
|
|
134
|
+
|
|
135
|
+
def set_session_type(self, session_type: str, force: bool = False):
|
|
136
|
+
"""
|
|
137
|
+
Sets the session type of the session to be created. Acceptable session_type values are: streaming and etl.
|
|
138
|
+
"""
|
|
139
|
+
raise NotImplementedError('set_session_type is not supported for current session')
|
|
140
|
+
|
|
141
|
+
def set_glue_version(self, glue_version: str, force: bool = False):
|
|
142
|
+
"""
|
|
143
|
+
Sets the glue version of the session to be created
|
|
144
|
+
"""
|
|
145
|
+
raise NotImplementedError('set_glue_version is not supported for current session')
|
|
146
|
+
|
|
147
|
+
def set_idle_timeout(self, idle_timeout: str, force: bool = False):
|
|
148
|
+
"""
|
|
149
|
+
Sets the idle timeout value of the session to be created
|
|
150
|
+
"""
|
|
151
|
+
raise NotImplementedError('set_idle_timeout is not supported for current session')
|
|
152
|
+
|
|
153
|
+
def spark_conf(self, spark_conf: str, force: bool = False):
|
|
154
|
+
"""
|
|
155
|
+
Sets the spark configuration value of the session to be created
|
|
156
|
+
"""
|
|
157
|
+
raise NotImplementedError('spark_conf is not supported for current session')
|
|
158
|
+
|
|
159
|
+
def get_logger(self):
|
|
160
|
+
if not hasattr(self, '_logger'):
|
|
161
|
+
self._logger = logging.getLogger(__name__)
|
|
162
|
+
return self._logger
|