Основное различие между таблицами EXTERNAL
и MANAGED
заключается в поведении удаления таблицы / раздела. Когда вы удаляете MANAGED
таблицу / раздел, местоположение с файлами данных также удаляется. При удалении таблицы EXTERNAL
местоположение с файлами данных остается без изменений.
Таблица
EXTERNAL
и MANAGED
хранятся в месте, указанном в DDL . Вы можете создать таблицу поверх существующего местоположения с файлами данных, уже находящимися в этом местоположении, и это будет работать как для EXTERNAL
, так и для MANAGED
, не имеет значения.
Вы даже можете создать таблицы EXTERNAL
и MANAGED
поверх одного и того же местоположения, см. Этот ответ с более подробной информацией и тестами: https://stackoverflow.com/a/54038932/ 2700344
Если вы указали местоположение, данные будут храниться в этом месте для обоих типов таблиц. Если вы не указали местоположение, данные будут в расположении по умолчанию: /user/hive/warehouse/database_name.db/table_name
для управляемых и внешних таблиц.
См. Также официальные документы Hive по Управляемые и внешние таблицы
.
Прием я просто раньше заставлял это работать, должен иметь дополнение слева от контейнера, и мы можем поощрить лево-одноуровневый элемент находиться в этом пространстве путем предоставления ему равного, но отрицательного поля.
Для завершения изображения, мы также помещаем дополнение справа от контейнера равного размера к ширине лево-одноуровневого элемента.
<html>
<head>
<style type='text/css'>
#container {
width: 500px;
padding-left:50px;
padding-right:50px;
}
#left-sibling {
border: solid 1px #000;
float: left;
width:50px;
margin-left:-50px;
}
#right-sibling {
border: solid 1px #000;
text-align: center;
}
#container2 {
width: 500px;
}
</style>
</head>
<body>
<div id='container'>
<div id='left-sibling'>Spam</div>
<div id='right-sibling'>Eggs<br />Eggs<br />Eggs<br /></div>
</div>
<div id='container'>
<div id='left-sibling' style="display:none;">Spam</div>
<div id='right-sibling'>Eggs<br />Eggs<br />Eggs<br /></div>
</div>
<div id='container2'>
<div id='right-sibling'>Eggs<br />Eggs<br />Eggs<br /></div>
</div>
</body>
</html>
Попытайтесь установить налево-одноуровневый-элемент ширины и равное дополнительное право: направо-одноуровневый-элемент
как так
<html>
<head>
<style type='text/css'>
#container {
width: 500px;
}
#left-sibling {
float: left;
width:50px;
}
#right-sibling {
text-align: center;
padding-right:50px;
}
</style>
</head>
<body>
<div id='container'>
<div id='left-sibling'>Spam</div>
<div id='right-sibling'>Eggs</div>
</div>
</body>
</html>
Можно измениться float: left;
на #left-sibling
кому: position: absolute;
. Это вынет его из нормального потока, таким образом, это не будет больше влиять на правильный одноуровневый элемент.
Конечно, это могло иметь другие побочные эффекты с Вашим дизайном.
Необходимо всегда устанавливать ширину на пущенных в ход элементах, иначе вещи становятся странными :)
Если Вы помещаете a
border: solid 1px #000;
правило об обоих отделениях, Вы будете видеть то, что происходит - #right-sibling отделение, заполняет всю ширину родительского отделения (#container), поэтому хотя текст на самом деле выровненный к центру, похоже, что это не!
Текст - выравнивается, атрибут управляет выравниванием содержания в контейнере, где атрибут применяется. Путем добавления следующих стилей легко видеть:
#left-sibling { float: left; width:100px; border:1px Solid Blue; }
#right-sibling { text-align: center; width:100px; border:1px Solid Red; }
Я предложил бы добавить doctype к документу для предотвращения quirksmode
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
и следующие стили:
#container { width: 500px; position:relative; border:1px Solid Black; }
#left-sibling { float:left; position:absolute; top:0px; left:0px; width:100px; border:1px Solid Blue; }
#right-sibling { width:100px; position:relative; margin-left:auto; margin-right:auto; border:1px Solid Red; }
Вы, конечно, хотели бы скорректировать размер одноуровневых элементов для установки потребностям. Границы делают хорошее задание, показывающее, что действительно происходит.