Skip to content

Commit 06b57c1

Browse files
can-sunDanicywang86rui
authored
change: use ResolvedOutputS3Uir for Hive DDL LOCATION (#2213)
* Update feature_group.py * Update test_feature_store.py * Update feature_group.py Co-authored-by: Dan <[email protected]> Co-authored-by: icywang86rui <[email protected]>
1 parent dacacb6 commit 06b57c1

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

src/sagemaker/feature_store/feature_group.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -512,14 +512,11 @@ def as_hive_ddl(self, database: str = "sagemaker_featurestore", table_name: str
512512
if not table_name:
513513
table_name = self.name
514514

515-
s3_uri = self.describe().get("OfflineStoreConfig").get("S3StorageConfig").get("S3Uri")
516-
offline_store_s3_uri = os.path.join(
517-
s3_uri,
518-
self.sagemaker_session.account_id(),
519-
"sagemaker",
520-
self.sagemaker_session.boto_session.region_name,
521-
"offline-store",
522-
self.name,
515+
resolved_output_s3_uri = (
516+
self.describe()
517+
.get("OfflineStoreConfig")
518+
.get("S3StorageConfig")
519+
.get("ResolvedOutputS3Uri")
523520
)
524521

525522
ddl = f"CREATE EXTERNAL TABLE IF NOT EXISTS {database}.{table_name} (\n"
@@ -537,6 +534,6 @@ def as_hive_ddl(self, database: str = "sagemaker_featurestore", table_name: str
537534
" STORED AS\n"
538535
" INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'\n"
539536
" OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'\n"
540-
f"LOCATION '{offline_store_s3_uri}'"
537+
f"LOCATION '{resolved_output_s3_uri}'"
541538
)
542539
return ddl

tests/integ/test_feature_store.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,7 @@ def create_table_ddl():
142142
" STORED AS\n"
143143
" INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'\n"
144144
" OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'\n"
145-
"LOCATION 's3://sagemaker-test-featurestore-{region}-{account}"
146-
"/{account}/sagemaker/us-east-2/offline-store/{feature_group_name}'"
145+
"LOCATION '{resolved_output_s3_uri}'"
147146
)
148147

149148

@@ -191,6 +190,12 @@ def test_create_feature_store(
191190
)
192191
_wait_for_feature_group_create(feature_group)
193192

193+
resolved_output_s3_uri = (
194+
feature_group.describe()
195+
.get("OfflineStoreConfig")
196+
.get("S3StorageConfig")
197+
.get("ResolvedOutputS3Uri")
198+
)
194199
# Ingest data
195200
feature_group.put_record(record=record)
196201
ingestion_manager = feature_group.ingest(
@@ -225,6 +230,7 @@ def test_create_feature_store(
225230
feature_group_name=feature_group_name,
226231
region=feature_store_session.boto_session.region_name,
227232
account=feature_store_session.account_id(),
233+
resolved_output_s3_uri=resolved_output_s3_uri,
228234
)
229235
== feature_group.as_hive_ddl()
230236
)

tests/unit/sagemaker/feature_store/test_feature_store.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ def create_table_ddl():
6666
" STORED AS\n"
6767
" INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'\n"
6868
" OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'\n"
69-
"LOCATION 's3://some-bucket"
70-
"/{account}/sagemaker/{region}/offline-store/{feature_group_name}'"
69+
"LOCATION 's3://resolved_output_s3_uri'"
7170
)
7271

7372

@@ -217,7 +216,12 @@ def test_as_hive_ddl_with_default_values(
217216
create_table_ddl, feature_group_dummy_definitions, sagemaker_session_mock
218217
):
219218
sagemaker_session_mock.describe_feature_group.return_value = {
220-
"OfflineStoreConfig": {"S3StorageConfig": {"S3Uri": "s3://some-bucket"}}
219+
"OfflineStoreConfig": {
220+
"S3StorageConfig": {
221+
"S3Uri": "s3://some-bucket",
222+
"ResolvedOutputS3Uri": "s3://resolved_output_s3_uri",
223+
}
224+
}
221225
}
222226
sagemaker_session_mock.account_id.return_value = "1234"
223227
sagemaker_session_mock.boto_session.region_name = "us-west-2"
@@ -238,7 +242,12 @@ def test_as_hive_ddl_with_default_values(
238242

239243
def test_as_hive_ddl(create_table_ddl, feature_group_dummy_definitions, sagemaker_session_mock):
240244
sagemaker_session_mock.describe_feature_group.return_value = {
241-
"OfflineStoreConfig": {"S3StorageConfig": {"S3Uri": "s3://some-bucket"}}
245+
"OfflineStoreConfig": {
246+
"S3StorageConfig": {
247+
"S3Uri": "s3://some-bucket",
248+
"ResolvedOutputS3Uri": "s3://resolved_output_s3_uri",
249+
}
250+
}
242251
}
243252
sagemaker_session_mock.account_id.return_value = "1234"
244253
sagemaker_session_mock.boto_session.region_name = "us-west-2"

0 commit comments

Comments
 (0)